// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by google-apis-code-generator 1.5.1
//     C# generator version: 1.22.0
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

/**
 * \brief
 *   Cloud Tool Results firstparty API Version v1beta3firstparty
 *
 * \section ApiInfo API Version Information
 *    <table>
 *      <tr><th>API
 *          <td><a href='https://firebase.google.com/docs/test-lab/'>Cloud Tool Results firstparty API</a>
 *      <tr><th>API Version<td>v1beta3firstparty
 *      <tr><th>API Rev<td>20170321 (810)
 *      <tr><th>API Docs
 *          <td><a href='https://firebase.google.com/docs/test-lab/'>
 *              https://firebase.google.com/docs/test-lab/</a>
 *      <tr><th>Discovery Name<td>toolresults
 *    </table>
 *
 * \section ForMoreInfo For More Information
 *
 * The complete API documentation for using Cloud Tool Results firstparty API can be found at
 * <a href='https://firebase.google.com/docs/test-lab/'>https://firebase.google.com/docs/test-lab/</a>.
 *
 * For more information about the Google APIs Client Library for .NET, see
 * <a href='https://developers.google.com/api-client-library/dotnet/get_started'>
 * https://developers.google.com/api-client-library/dotnet/get_started</a>
 */

namespace Google.Apis.ToolResults.v1beta3firstparty
{
    /// <summary>The ToolResults Service.</summary>
    public class ToolResultsService : Google.Apis.Services.BaseClientService
    {
        /// <summary>The API version.</summary>
        public const string Version = "v1beta3firstparty";

        /// <summary>The discovery version used to generate this service.</summary>
        public static Google.Apis.Discovery.DiscoveryVersion DiscoveryVersionUsed =
            Google.Apis.Discovery.DiscoveryVersion.Version_1_0;

        /// <summary>Constructs a new service.</summary>
        public ToolResultsService() :
            this(new Google.Apis.Services.BaseClientService.Initializer()) {}

        /// <summary>Constructs a new service.</summary>
        /// <param name="initializer">The service initializer.</param>
        public ToolResultsService(Google.Apis.Services.BaseClientService.Initializer initializer)
            : base(initializer)
        {
            projects = new ProjectsResource(this);
        }

        /// <summary>Gets the service supported features.</summary>
        public override System.Collections.Generic.IList<string> Features
        {
            get { return new string[0]; }
        }

        /// <summary>Gets the service name.</summary>
        public override string Name
        {
            get { return "toolresults"; }
        }

        /// <summary>Gets the service base URI.</summary>
        public override string BaseUri
        {
            get { return "https://www.googleapis.com/toolresults/v1beta3firstparty/projects/"; }
        }

        /// <summary>Gets the service base path.</summary>
        public override string BasePath
        {
            get { return "toolresults/v1beta3firstparty/projects/"; }
        }





        private readonly ProjectsResource projects;

        /// <summary>Gets the Projects resource.</summary>
        public virtual ProjectsResource Projects
        {
            get { return projects; }
        }
    }

    ///<summary>A base abstract class for ToolResults requests.</summary>
    public abstract class ToolResultsBaseServiceRequest<TResponse> : Google.Apis.Requests.ClientServiceRequest<TResponse>
    {
        ///<summary>Constructs a new ToolResultsBaseServiceRequest instance.</summary>
        protected ToolResultsBaseServiceRequest(Google.Apis.Services.IClientService service)
            : base(service)
        {
        }

        /// <summary>Data format for the response.</summary>
        /// [default: json]
        [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<AltEnum> Alt { get; set; }

        /// <summary>Data format for the response.</summary>
        public enum AltEnum
        {
            /// <summary>Responses with Content-Type of application/json</summary>
            [Google.Apis.Util.StringValueAttribute("json")]
            Json,
        }

        /// <summary>Selector specifying which fields to include in a partial response.</summary>
        [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Fields { get; set; }

        /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and reports.
        /// Required unless you provide an OAuth 2.0 token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Key { get; set; }

        /// <summary>OAuth 2.0 token for the current user.</summary>
        [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string OauthToken { get; set; }

        /// <summary>Returns response with indentations and line breaks.</summary>
        /// [default: true]
        [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> PrettyPrint { get; set; }

        /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary string
        /// assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.</summary>
        [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string QuotaUser { get; set; }

        /// <summary>IP address of the site where the request originates. Use this if you want to enforce per-user
        /// limits.</summary>
        [Google.Apis.Util.RequestParameterAttribute("userIp", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UserIp { get; set; }

        /// <summary>Initializes ToolResults parameter list.</summary>
        protected override void InitParameters()
        {
            base.InitParameters();

            RequestParameters.Add(
                "alt", new Google.Apis.Discovery.Parameter
                {
                    Name = "alt",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "json",
                    Pattern = null,
                });
            RequestParameters.Add(
                "fields", new Google.Apis.Discovery.Parameter
                {
                    Name = "fields",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "key", new Google.Apis.Discovery.Parameter
                {
                    Name = "key",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "oauth_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "oauth_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "prettyPrint", new Google.Apis.Discovery.Parameter
                {
                    Name = "prettyPrint",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "true",
                    Pattern = null,
                });
            RequestParameters.Add(
                "quotaUser", new Google.Apis.Discovery.Parameter
                {
                    Name = "quotaUser",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "userIp", new Google.Apis.Discovery.Parameter
                {
                    Name = "userIp",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
        }
    }

    /// <summary>The "projects" collection of methods.</summary>
    public class ProjectsResource
    {
        private const string Resource = "projects";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public ProjectsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;
            histories = new HistoriesResource(service);

        }

        private readonly HistoriesResource histories;

        /// <summary>Gets the Histories resource.</summary>
        public virtual HistoriesResource Histories
        {
            get { return histories; }
        }

        /// <summary>The "histories" collection of methods.</summary>
        public class HistoriesResource
        {
            private const string Resource = "histories";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public HistoriesResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;
                executions = new ExecutionsResource(service);

            }

            private readonly ExecutionsResource executions;

            /// <summary>Gets the Executions resource.</summary>
            public virtual ExecutionsResource Executions
            {
                get { return executions; }
            }

            /// <summary>The "executions" collection of methods.</summary>
            public class ExecutionsResource
            {
                private const string Resource = "executions";

                /// <summary>The service which this resource belongs to.</summary>
                private readonly Google.Apis.Services.IClientService service;

                /// <summary>Constructs a new resource.</summary>
                public ExecutionsResource(Google.Apis.Services.IClientService service)
                {
                    this.service = service;
                    steps = new StepsResource(service);

                }

                private readonly StepsResource steps;

                /// <summary>Gets the Steps resource.</summary>
                public virtual StepsResource Steps
                {
                    get { return steps; }
                }

                /// <summary>The "steps" collection of methods.</summary>
                public class StepsResource
                {
                    private const string Resource = "steps";

                    /// <summary>The service which this resource belongs to.</summary>
                    private readonly Google.Apis.Services.IClientService service;

                    /// <summary>Constructs a new resource.</summary>
                    public StepsResource(Google.Apis.Services.IClientService service)
                    {
                        this.service = service;
                        perfMetricsSummary = new PerfMetricsSummaryResource(service);
                        perfSampleSeries = new PerfSampleSeriesResource(service);
                        thumbnails = new ThumbnailsResource(service);

                    }

                    private readonly PerfMetricsSummaryResource perfMetricsSummary;

                    /// <summary>Gets the PerfMetricsSummary resource.</summary>
                    public virtual PerfMetricsSummaryResource PerfMetricsSummary
                    {
                        get { return perfMetricsSummary; }
                    }

                    /// <summary>The "perfMetricsSummary" collection of methods.</summary>
                    public class PerfMetricsSummaryResource
                    {
                        private const string Resource = "perfMetricsSummary";

                        /// <summary>The service which this resource belongs to.</summary>
                        private readonly Google.Apis.Services.IClientService service;

                        /// <summary>Constructs a new resource.</summary>
                        public PerfMetricsSummaryResource(Google.Apis.Services.IClientService service)
                        {
                            this.service = service;

                        }


                        /// <summary>Creates a PerfMetricsSummary resource.
                        ///
                        /// May return any of the following error code(s): - ALREADY_EXISTS - A PerfMetricSummary
                        /// already exists for the given Step - NOT_FOUND - The containing Step does not exist</summary>
                        /// <param name="body">The body of the request.</param>
                        /// <param name="projectId">The cloud project</param>
                        /// <param name="historyId">A tool results history
                        /// ID.</param>
                        /// <param name="executionId">A tool results execution ID.</param>
                        /// <param name="stepId">A
                        /// tool results step ID.</param>
                        public virtual CreateRequest Create(Google.Apis.ToolResults.v1beta3firstparty.Data.PerfMetricsSummary body, string projectId, string historyId, string executionId, string stepId)
                        {
                            return new CreateRequest(service, body, projectId, historyId, executionId, stepId);
                        }

                        /// <summary>Creates a PerfMetricsSummary resource.
                        ///
                        /// May return any of the following error code(s): - ALREADY_EXISTS - A PerfMetricSummary
                        /// already exists for the given Step - NOT_FOUND - The containing Step does not exist</summary>
                        public class CreateRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.PerfMetricsSummary>
                        {
                            /// <summary>Constructs a new Create request.</summary>
                            public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.ToolResults.v1beta3firstparty.Data.PerfMetricsSummary body, string projectId, string historyId, string executionId, string stepId)
                                : base(service)
                            {
                                ProjectId = projectId;
                                HistoryId = historyId;
                                ExecutionId = executionId;
                                StepId = stepId;
                                Body = body;
                                InitParameters();
                            }


                            /// <summary>The cloud project</summary>
                            [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string ProjectId { get; private set; }

                            /// <summary>A tool results history ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string HistoryId { get; private set; }

                            /// <summary>A tool results execution ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string ExecutionId { get; private set; }

                            /// <summary>A tool results step ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("stepId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string StepId { get; private set; }


                            /// <summary>Gets or sets the body of this request.</summary>
                            Google.Apis.ToolResults.v1beta3firstparty.Data.PerfMetricsSummary Body { get; set; }

                            ///<summary>Returns the body of the request.</summary>
                            protected override object GetBody() { return Body; }

                            ///<summary>Gets the method name.</summary>
                            public override string MethodName
                            {
                                get { return "create"; }
                            }

                            ///<summary>Gets the HTTP method.</summary>
                            public override string HttpMethod
                            {
                                get { return "POST"; }
                            }

                            ///<summary>Gets the REST path.</summary>
                            public override string RestPath
                            {
                                get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}/perfMetricsSummary"; }
                            }

                            /// <summary>Initializes Create parameter list.</summary>
                            protected override void InitParameters()
                            {
                                base.InitParameters();

                                RequestParameters.Add(
                                    "projectId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "projectId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "historyId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "historyId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "executionId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "executionId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "stepId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "stepId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                            }

                        }
                    }
                    private readonly PerfSampleSeriesResource perfSampleSeries;

                    /// <summary>Gets the PerfSampleSeries resource.</summary>
                    public virtual PerfSampleSeriesResource PerfSampleSeries
                    {
                        get { return perfSampleSeries; }
                    }

                    /// <summary>The "perfSampleSeries" collection of methods.</summary>
                    public class PerfSampleSeriesResource
                    {
                        private const string Resource = "perfSampleSeries";

                        /// <summary>The service which this resource belongs to.</summary>
                        private readonly Google.Apis.Services.IClientService service;

                        /// <summary>Constructs a new resource.</summary>
                        public PerfSampleSeriesResource(Google.Apis.Services.IClientService service)
                        {
                            this.service = service;
                            samples = new SamplesResource(service);

                        }

                        private readonly SamplesResource samples;

                        /// <summary>Gets the Samples resource.</summary>
                        public virtual SamplesResource Samples
                        {
                            get { return samples; }
                        }

                        /// <summary>The "samples" collection of methods.</summary>
                        public class SamplesResource
                        {
                            private const string Resource = "samples";

                            /// <summary>The service which this resource belongs to.</summary>
                            private readonly Google.Apis.Services.IClientService service;

                            /// <summary>Constructs a new resource.</summary>
                            public SamplesResource(Google.Apis.Services.IClientService service)
                            {
                                this.service = service;

                            }


                            /// <summary>Creates a batch of PerfSamples - a client can submit multiple batches of Perf
                            /// Samples through repeated calls to this method in order to split up a large request
                            /// payload - duplicates and existing timestamp entries will be ignored. - the batch
                            /// operation may partially succeed - the set of elements successfully inserted is returned
                            /// in the response (omits items which already existed in the database).
                            ///
                            /// May return any of the following canonical error codes: - NOT_FOUND - The containing
                            /// PerfSampleSeries does not exist</summary>
                            /// <param name="body">The body of the request.</param>
                            /// <param name="projectId">The cloud project</param>
                            /// <param name="historyId">A tool results history
                            /// ID.</param>
                            /// <param name="executionId">A tool results execution ID.</param>
                            /// <param name="stepId">A
                            /// tool results step ID.</param>
                            /// <param name="sampleSeriesId">A sample series id</param>
                            public virtual BatchCreateRequest BatchCreate(Google.Apis.ToolResults.v1beta3firstparty.Data.BatchCreatePerfSamplesRequest body, string projectId, string historyId, string executionId, string stepId, string sampleSeriesId)
                            {
                                return new BatchCreateRequest(service, body, projectId, historyId, executionId, stepId, sampleSeriesId);
                            }

                            /// <summary>Creates a batch of PerfSamples - a client can submit multiple batches of Perf
                            /// Samples through repeated calls to this method in order to split up a large request
                            /// payload - duplicates and existing timestamp entries will be ignored. - the batch
                            /// operation may partially succeed - the set of elements successfully inserted is returned
                            /// in the response (omits items which already existed in the database).
                            ///
                            /// May return any of the following canonical error codes: - NOT_FOUND - The containing
                            /// PerfSampleSeries does not exist</summary>
                            public class BatchCreateRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.BatchCreatePerfSamplesResponse>
                            {
                                /// <summary>Constructs a new BatchCreate request.</summary>
                                public BatchCreateRequest(Google.Apis.Services.IClientService service, Google.Apis.ToolResults.v1beta3firstparty.Data.BatchCreatePerfSamplesRequest body, string projectId, string historyId, string executionId, string stepId, string sampleSeriesId)
                                    : base(service)
                                {
                                    ProjectId = projectId;
                                    HistoryId = historyId;
                                    ExecutionId = executionId;
                                    StepId = stepId;
                                    SampleSeriesId = sampleSeriesId;
                                    Body = body;
                                    InitParameters();
                                }


                                /// <summary>The cloud project</summary>
                                [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                                public virtual string ProjectId { get; private set; }

                                /// <summary>A tool results history ID.</summary>
                                [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                                public virtual string HistoryId { get; private set; }

                                /// <summary>A tool results execution ID.</summary>
                                [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                                public virtual string ExecutionId { get; private set; }

                                /// <summary>A tool results step ID.</summary>
                                [Google.Apis.Util.RequestParameterAttribute("stepId", Google.Apis.Util.RequestParameterType.Path)]
                                public virtual string StepId { get; private set; }

                                /// <summary>A sample series id</summary>
                                [Google.Apis.Util.RequestParameterAttribute("sampleSeriesId", Google.Apis.Util.RequestParameterType.Path)]
                                public virtual string SampleSeriesId { get; private set; }


                                /// <summary>Gets or sets the body of this request.</summary>
                                Google.Apis.ToolResults.v1beta3firstparty.Data.BatchCreatePerfSamplesRequest Body { get; set; }

                                ///<summary>Returns the body of the request.</summary>
                                protected override object GetBody() { return Body; }

                                ///<summary>Gets the method name.</summary>
                                public override string MethodName
                                {
                                    get { return "batchCreate"; }
                                }

                                ///<summary>Gets the HTTP method.</summary>
                                public override string HttpMethod
                                {
                                    get { return "POST"; }
                                }

                                ///<summary>Gets the REST path.</summary>
                                public override string RestPath
                                {
                                    get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}/perfSampleSeries/{sampleSeriesId}/samples:batchCreate"; }
                                }

                                /// <summary>Initializes BatchCreate parameter list.</summary>
                                protected override void InitParameters()
                                {
                                    base.InitParameters();

                                    RequestParameters.Add(
                                        "projectId", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "projectId",
                                            IsRequired = true,
                                            ParameterType = "path",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                    RequestParameters.Add(
                                        "historyId", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "historyId",
                                            IsRequired = true,
                                            ParameterType = "path",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                    RequestParameters.Add(
                                        "executionId", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "executionId",
                                            IsRequired = true,
                                            ParameterType = "path",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                    RequestParameters.Add(
                                        "stepId", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "stepId",
                                            IsRequired = true,
                                            ParameterType = "path",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                    RequestParameters.Add(
                                        "sampleSeriesId", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "sampleSeriesId",
                                            IsRequired = true,
                                            ParameterType = "path",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                }

                            }

                            /// <summary>Lists the Performance Samples of a given Sample Series - The list results are
                            /// sorted by timestamps ascending - The default page size is 500 samples; and maximum size
                            /// allowed 5000 - The response token indicates the last returned PerfSample timestamp -
                            /// When the results size exceeds the page size, submit a subsequent request including the
                            /// page token to return the rest of the samples up to the page limit
                            ///
                            /// May return any of the following canonical error codes: - OUT_OF_RANGE - The specified
                            /// request page_token is out of valid range - NOT_FOUND - The containing PerfSampleSeries
                            /// does not exist</summary>
                            /// <param name="projectId">The cloud project</param>
                            /// <param name="historyId">A tool results history
                            /// ID.</param>
                            /// <param name="executionId">A tool results execution ID.</param>
                            /// <param name="stepId">A
                            /// tool results step ID.</param>
                            /// <param name="sampleSeriesId">A sample series id</param>
                            public virtual ListRequest List(string projectId, string historyId, string executionId, string stepId, string sampleSeriesId)
                            {
                                return new ListRequest(service, projectId, historyId, executionId, stepId, sampleSeriesId);
                            }

                            /// <summary>Lists the Performance Samples of a given Sample Series - The list results are
                            /// sorted by timestamps ascending - The default page size is 500 samples; and maximum size
                            /// allowed 5000 - The response token indicates the last returned PerfSample timestamp -
                            /// When the results size exceeds the page size, submit a subsequent request including the
                            /// page token to return the rest of the samples up to the page limit
                            ///
                            /// May return any of the following canonical error codes: - OUT_OF_RANGE - The specified
                            /// request page_token is out of valid range - NOT_FOUND - The containing PerfSampleSeries
                            /// does not exist</summary>
                            public class ListRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.ListPerfSamplesResponse>
                            {
                                /// <summary>Constructs a new List request.</summary>
                                public ListRequest(Google.Apis.Services.IClientService service, string projectId, string historyId, string executionId, string stepId, string sampleSeriesId)
                                    : base(service)
                                {
                                    ProjectId = projectId;
                                    HistoryId = historyId;
                                    ExecutionId = executionId;
                                    StepId = stepId;
                                    SampleSeriesId = sampleSeriesId;
                                    InitParameters();
                                }


                                /// <summary>The cloud project</summary>
                                [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                                public virtual string ProjectId { get; private set; }

                                /// <summary>A tool results history ID.</summary>
                                [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                                public virtual string HistoryId { get; private set; }

                                /// <summary>A tool results execution ID.</summary>
                                [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                                public virtual string ExecutionId { get; private set; }

                                /// <summary>A tool results step ID.</summary>
                                [Google.Apis.Util.RequestParameterAttribute("stepId", Google.Apis.Util.RequestParameterType.Path)]
                                public virtual string StepId { get; private set; }

                                /// <summary>A sample series id</summary>
                                [Google.Apis.Util.RequestParameterAttribute("sampleSeriesId", Google.Apis.Util.RequestParameterType.Path)]
                                public virtual string SampleSeriesId { get; private set; }

                                /// <summary>The default page size is 500 samples, and the maximum size is 5000. If the
                                /// page_size is greater than 5000, the effective page size will be 5000</summary>
                                [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                                public virtual System.Nullable<int> PageSize { get; set; }

                                /// <summary>Optional, the next_page_token returned in the previous response</summary>
                                [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                                public virtual string PageToken { get; set; }


                                ///<summary>Gets the method name.</summary>
                                public override string MethodName
                                {
                                    get { return "list"; }
                                }

                                ///<summary>Gets the HTTP method.</summary>
                                public override string HttpMethod
                                {
                                    get { return "GET"; }
                                }

                                ///<summary>Gets the REST path.</summary>
                                public override string RestPath
                                {
                                    get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}/perfSampleSeries/{sampleSeriesId}/samples"; }
                                }

                                /// <summary>Initializes List parameter list.</summary>
                                protected override void InitParameters()
                                {
                                    base.InitParameters();

                                    RequestParameters.Add(
                                        "projectId", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "projectId",
                                            IsRequired = true,
                                            ParameterType = "path",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                    RequestParameters.Add(
                                        "historyId", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "historyId",
                                            IsRequired = true,
                                            ParameterType = "path",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                    RequestParameters.Add(
                                        "executionId", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "executionId",
                                            IsRequired = true,
                                            ParameterType = "path",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                    RequestParameters.Add(
                                        "stepId", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "stepId",
                                            IsRequired = true,
                                            ParameterType = "path",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                    RequestParameters.Add(
                                        "sampleSeriesId", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "sampleSeriesId",
                                            IsRequired = true,
                                            ParameterType = "path",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                    RequestParameters.Add(
                                        "pageSize", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "pageSize",
                                            IsRequired = false,
                                            ParameterType = "query",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                    RequestParameters.Add(
                                        "pageToken", new Google.Apis.Discovery.Parameter
                                        {
                                            Name = "pageToken",
                                            IsRequired = false,
                                            ParameterType = "query",
                                            DefaultValue = null,
                                            Pattern = null,
                                        });
                                }

                            }
                        }

                        /// <summary>Creates a PerfSampleSeries.
                        ///
                        /// May return any of the following error code(s): - ALREADY_EXISTS - PerfMetricSummary already
                        /// exists for the given Step - NOT_FOUND - The containing Step does not exist</summary>
                        /// <param name="body">The body of the request.</param>
                        /// <param name="projectId">The cloud project</param>
                        /// <param name="historyId">A tool results history
                        /// ID.</param>
                        /// <param name="executionId">A tool results execution ID.</param>
                        /// <param name="stepId">A
                        /// tool results step ID.</param>
                        public virtual CreateRequest Create(Google.Apis.ToolResults.v1beta3firstparty.Data.PerfSampleSeries body, string projectId, string historyId, string executionId, string stepId)
                        {
                            return new CreateRequest(service, body, projectId, historyId, executionId, stepId);
                        }

                        /// <summary>Creates a PerfSampleSeries.
                        ///
                        /// May return any of the following error code(s): - ALREADY_EXISTS - PerfMetricSummary already
                        /// exists for the given Step - NOT_FOUND - The containing Step does not exist</summary>
                        public class CreateRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.PerfSampleSeries>
                        {
                            /// <summary>Constructs a new Create request.</summary>
                            public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.ToolResults.v1beta3firstparty.Data.PerfSampleSeries body, string projectId, string historyId, string executionId, string stepId)
                                : base(service)
                            {
                                ProjectId = projectId;
                                HistoryId = historyId;
                                ExecutionId = executionId;
                                StepId = stepId;
                                Body = body;
                                InitParameters();
                            }


                            /// <summary>The cloud project</summary>
                            [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string ProjectId { get; private set; }

                            /// <summary>A tool results history ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string HistoryId { get; private set; }

                            /// <summary>A tool results execution ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string ExecutionId { get; private set; }

                            /// <summary>A tool results step ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("stepId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string StepId { get; private set; }


                            /// <summary>Gets or sets the body of this request.</summary>
                            Google.Apis.ToolResults.v1beta3firstparty.Data.PerfSampleSeries Body { get; set; }

                            ///<summary>Returns the body of the request.</summary>
                            protected override object GetBody() { return Body; }

                            ///<summary>Gets the method name.</summary>
                            public override string MethodName
                            {
                                get { return "create"; }
                            }

                            ///<summary>Gets the HTTP method.</summary>
                            public override string HttpMethod
                            {
                                get { return "POST"; }
                            }

                            ///<summary>Gets the REST path.</summary>
                            public override string RestPath
                            {
                                get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}/perfSampleSeries"; }
                            }

                            /// <summary>Initializes Create parameter list.</summary>
                            protected override void InitParameters()
                            {
                                base.InitParameters();

                                RequestParameters.Add(
                                    "projectId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "projectId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "historyId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "historyId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "executionId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "executionId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "stepId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "stepId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                            }

                        }

                        /// <summary>Gets a PerfSampleSeries.
                        ///
                        /// May return any of the following error code(s): - NOT_FOUND - The specified PerfSampleSeries
                        /// does not exist</summary>
                        /// <param name="projectId">The cloud project</param>
                        /// <param name="historyId">A tool results history
                        /// ID.</param>
                        /// <param name="executionId">A tool results execution ID.</param>
                        /// <param name="stepId">A
                        /// tool results step ID.</param>
                        /// <param name="sampleSeriesId">A sample series id</param>
                        public virtual GetRequest Get(string projectId, string historyId, string executionId, string stepId, string sampleSeriesId)
                        {
                            return new GetRequest(service, projectId, historyId, executionId, stepId, sampleSeriesId);
                        }

                        /// <summary>Gets a PerfSampleSeries.
                        ///
                        /// May return any of the following error code(s): - NOT_FOUND - The specified PerfSampleSeries
                        /// does not exist</summary>
                        public class GetRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.PerfSampleSeries>
                        {
                            /// <summary>Constructs a new Get request.</summary>
                            public GetRequest(Google.Apis.Services.IClientService service, string projectId, string historyId, string executionId, string stepId, string sampleSeriesId)
                                : base(service)
                            {
                                ProjectId = projectId;
                                HistoryId = historyId;
                                ExecutionId = executionId;
                                StepId = stepId;
                                SampleSeriesId = sampleSeriesId;
                                InitParameters();
                            }


                            /// <summary>The cloud project</summary>
                            [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string ProjectId { get; private set; }

                            /// <summary>A tool results history ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string HistoryId { get; private set; }

                            /// <summary>A tool results execution ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string ExecutionId { get; private set; }

                            /// <summary>A tool results step ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("stepId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string StepId { get; private set; }

                            /// <summary>A sample series id</summary>
                            [Google.Apis.Util.RequestParameterAttribute("sampleSeriesId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string SampleSeriesId { get; private set; }


                            ///<summary>Gets the method name.</summary>
                            public override string MethodName
                            {
                                get { return "get"; }
                            }

                            ///<summary>Gets the HTTP method.</summary>
                            public override string HttpMethod
                            {
                                get { return "GET"; }
                            }

                            ///<summary>Gets the REST path.</summary>
                            public override string RestPath
                            {
                                get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}/perfSampleSeries/{sampleSeriesId}"; }
                            }

                            /// <summary>Initializes Get parameter list.</summary>
                            protected override void InitParameters()
                            {
                                base.InitParameters();

                                RequestParameters.Add(
                                    "projectId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "projectId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "historyId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "historyId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "executionId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "executionId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "stepId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "stepId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "sampleSeriesId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "sampleSeriesId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                            }

                        }

                        /// <summary>Lists PerfSampleSeries for a given Step.
                        ///
                        /// The request provides an optional filter which specifies one or more PerfMetricsType to
                        /// include in the result; if none returns all. The resulting PerfSampleSeries are sorted by
                        /// ids.
                        ///
                        /// May return any of the following canonical error codes: - NOT_FOUND - The containing Step
                        /// does not exist</summary>
                        /// <param name="projectId">The cloud project</param>
                        /// <param name="historyId">A tool results history
                        /// ID.</param>
                        /// <param name="executionId">A tool results execution ID.</param>
                        /// <param name="stepId">A
                        /// tool results step ID.</param>
                        public virtual ListRequest List(string projectId, string historyId, string executionId, string stepId)
                        {
                            return new ListRequest(service, projectId, historyId, executionId, stepId);
                        }

                        /// <summary>Lists PerfSampleSeries for a given Step.
                        ///
                        /// The request provides an optional filter which specifies one or more PerfMetricsType to
                        /// include in the result; if none returns all. The resulting PerfSampleSeries are sorted by
                        /// ids.
                        ///
                        /// May return any of the following canonical error codes: - NOT_FOUND - The containing Step
                        /// does not exist</summary>
                        public class ListRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.ListPerfSampleSeriesResponse>
                        {
                            /// <summary>Constructs a new List request.</summary>
                            public ListRequest(Google.Apis.Services.IClientService service, string projectId, string historyId, string executionId, string stepId)
                                : base(service)
                            {
                                ProjectId = projectId;
                                HistoryId = historyId;
                                ExecutionId = executionId;
                                StepId = stepId;
                                InitParameters();
                            }


                            /// <summary>The cloud project</summary>
                            [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string ProjectId { get; private set; }

                            /// <summary>A tool results history ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string HistoryId { get; private set; }

                            /// <summary>A tool results execution ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string ExecutionId { get; private set; }

                            /// <summary>A tool results step ID.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("stepId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string StepId { get; private set; }

                            /// <summary>Specify one or more PerfMetricType values such as CPU to filter the
                            /// result</summary>
                            [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                            public virtual System.Nullable<FilterEnum> Filter { get; set; }

                            /// <summary>Specify one or more PerfMetricType values such as CPU to filter the
                            /// result</summary>
                            public enum FilterEnum
                            {
                                [Google.Apis.Util.StringValueAttribute("cpu")]
                                Cpu,
                                [Google.Apis.Util.StringValueAttribute("memory")]
                                Memory,
                                [Google.Apis.Util.StringValueAttribute("network")]
                                Network,
                                [Google.Apis.Util.StringValueAttribute("perfMetricTypeUnspecified")]
                                PerfMetricTypeUnspecified,
                            }


                            ///<summary>Gets the method name.</summary>
                            public override string MethodName
                            {
                                get { return "list"; }
                            }

                            ///<summary>Gets the HTTP method.</summary>
                            public override string HttpMethod
                            {
                                get { return "GET"; }
                            }

                            ///<summary>Gets the REST path.</summary>
                            public override string RestPath
                            {
                                get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}/perfSampleSeries"; }
                            }

                            /// <summary>Initializes List parameter list.</summary>
                            protected override void InitParameters()
                            {
                                base.InitParameters();

                                RequestParameters.Add(
                                    "projectId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "projectId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "historyId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "historyId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "executionId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "executionId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "stepId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "stepId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "filter", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "filter",
                                        IsRequired = false,
                                        ParameterType = "query",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                            }

                        }
                    }
                    private readonly ThumbnailsResource thumbnails;

                    /// <summary>Gets the Thumbnails resource.</summary>
                    public virtual ThumbnailsResource Thumbnails
                    {
                        get { return thumbnails; }
                    }

                    /// <summary>The "thumbnails" collection of methods.</summary>
                    public class ThumbnailsResource
                    {
                        private const string Resource = "thumbnails";

                        /// <summary>The service which this resource belongs to.</summary>
                        private readonly Google.Apis.Services.IClientService service;

                        /// <summary>Constructs a new resource.</summary>
                        public ThumbnailsResource(Google.Apis.Services.IClientService service)
                        {
                            this.service = service;

                        }


                        /// <summary>Lists thumbnails of images attached to a step.
                        ///
                        /// May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is
                        /// not authorized to read from the project, or from any of the images - INVALID_ARGUMENT - if
                        /// the request is malformed - NOT_FOUND - if the step does not exist, or if any of the images
                        /// do not exist</summary>
                        /// <param name="projectId">A Project id.
                        ///
                        /// Required.</param>
                        /// <param name="historyId">A History id.
                        ///
                        /// Required.</param>
                        /// <param name="executionId">An Execution id.
                        ///
                        /// Required.</param>
                        /// <param name="stepId">A Step id.
                        ///
                        /// Required.</param>
                        public virtual ListRequest List(string projectId, string historyId, string executionId, string stepId)
                        {
                            return new ListRequest(service, projectId, historyId, executionId, stepId);
                        }

                        /// <summary>Lists thumbnails of images attached to a step.
                        ///
                        /// May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is
                        /// not authorized to read from the project, or from any of the images - INVALID_ARGUMENT - if
                        /// the request is malformed - NOT_FOUND - if the step does not exist, or if any of the images
                        /// do not exist</summary>
                        public class ListRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.ListStepThumbnailsResponse>
                        {
                            /// <summary>Constructs a new List request.</summary>
                            public ListRequest(Google.Apis.Services.IClientService service, string projectId, string historyId, string executionId, string stepId)
                                : base(service)
                            {
                                ProjectId = projectId;
                                HistoryId = historyId;
                                ExecutionId = executionId;
                                StepId = stepId;
                                InitParameters();
                            }


                            /// <summary>A Project id.
                            ///
                            /// Required.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string ProjectId { get; private set; }

                            /// <summary>A History id.
                            ///
                            /// Required.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string HistoryId { get; private set; }

                            /// <summary>An Execution id.
                            ///
                            /// Required.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string ExecutionId { get; private set; }

                            /// <summary>A Step id.
                            ///
                            /// Required.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("stepId", Google.Apis.Util.RequestParameterType.Path)]
                            public virtual string StepId { get; private set; }

                            /// <summary>The maximum number of thumbnails to fetch.
                            ///
                            /// Default value: 50. The server will use this default if the field is not set or has a
                            /// value of 0.
                            ///
                            /// Optional.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                            public virtual System.Nullable<int> PageSize { get; set; }

                            /// <summary>A continuation token to resume the query at the next item.
                            ///
                            /// Optional.</summary>
                            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                            public virtual string PageToken { get; set; }


                            ///<summary>Gets the method name.</summary>
                            public override string MethodName
                            {
                                get { return "list"; }
                            }

                            ///<summary>Gets the HTTP method.</summary>
                            public override string HttpMethod
                            {
                                get { return "GET"; }
                            }

                            ///<summary>Gets the REST path.</summary>
                            public override string RestPath
                            {
                                get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}/thumbnails"; }
                            }

                            /// <summary>Initializes List parameter list.</summary>
                            protected override void InitParameters()
                            {
                                base.InitParameters();

                                RequestParameters.Add(
                                    "projectId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "projectId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "historyId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "historyId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "executionId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "executionId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "stepId", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "stepId",
                                        IsRequired = true,
                                        ParameterType = "path",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "pageSize", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "pageSize",
                                        IsRequired = false,
                                        ParameterType = "query",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                                RequestParameters.Add(
                                    "pageToken", new Google.Apis.Discovery.Parameter
                                    {
                                        Name = "pageToken",
                                        IsRequired = false,
                                        ParameterType = "query",
                                        DefaultValue = null,
                                        Pattern = null,
                                    });
                            }

                        }
                    }

                    /// <summary>Creates a Step.
                    ///
                    /// The returned Step will have the id set.
                    ///
                    /// May return any of the following canonical error codes:
                    ///
                    /// - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if
                    /// the request is malformed - FAILED_PRECONDITION - if the step is too large (more than 10Mib) -
                    /// NOT_FOUND - if the containing Execution does not exist</summary>
                    /// <param name="body">The body of the request.</param>
                    /// <param name="projectId">A Project id.
                    ///
                    /// Required.</param>
                    /// <param name="historyId">A History id.
                    ///
                    /// Required.</param>
                    /// <param name="executionId">A Execution id.
                    ///
                    /// Required.</param>
                    public virtual CreateRequest Create(Google.Apis.ToolResults.v1beta3firstparty.Data.Step body, string projectId, string historyId, string executionId)
                    {
                        return new CreateRequest(service, body, projectId, historyId, executionId);
                    }

                    /// <summary>Creates a Step.
                    ///
                    /// The returned Step will have the id set.
                    ///
                    /// May return any of the following canonical error codes:
                    ///
                    /// - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if
                    /// the request is malformed - FAILED_PRECONDITION - if the step is too large (more than 10Mib) -
                    /// NOT_FOUND - if the containing Execution does not exist</summary>
                    public class CreateRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.Step>
                    {
                        /// <summary>Constructs a new Create request.</summary>
                        public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.ToolResults.v1beta3firstparty.Data.Step body, string projectId, string historyId, string executionId)
                            : base(service)
                        {
                            ProjectId = projectId;
                            HistoryId = historyId;
                            ExecutionId = executionId;
                            Body = body;
                            InitParameters();
                        }


                        /// <summary>A Project id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ProjectId { get; private set; }

                        /// <summary>A History id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string HistoryId { get; private set; }

                        /// <summary>A Execution id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ExecutionId { get; private set; }

                        /// <summary>A unique request ID for server to detect duplicated requests. For example, a UUID.
                        ///
                        /// Optional, but strongly recommended.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("requestId", Google.Apis.Util.RequestParameterType.Query)]
                        public virtual string RequestId { get; set; }


                        /// <summary>Gets or sets the body of this request.</summary>
                        Google.Apis.ToolResults.v1beta3firstparty.Data.Step Body { get; set; }

                        ///<summary>Returns the body of the request.</summary>
                        protected override object GetBody() { return Body; }

                        ///<summary>Gets the method name.</summary>
                        public override string MethodName
                        {
                            get { return "create"; }
                        }

                        ///<summary>Gets the HTTP method.</summary>
                        public override string HttpMethod
                        {
                            get { return "POST"; }
                        }

                        ///<summary>Gets the REST path.</summary>
                        public override string RestPath
                        {
                            get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps"; }
                        }

                        /// <summary>Initializes Create parameter list.</summary>
                        protected override void InitParameters()
                        {
                            base.InitParameters();

                            RequestParameters.Add(
                                "projectId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "projectId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "historyId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "historyId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "executionId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "executionId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "requestId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "requestId",
                                    IsRequired = false,
                                    ParameterType = "query",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                        }

                    }

                    /// <summary>Gets a Step.
                    ///
                    /// May return any of the following canonical error codes:
                    ///
                    /// - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the
                    /// request is malformed - NOT_FOUND - if the Step does not exist</summary>
                    /// <param name="projectId">A Project id.
                    ///
                    /// Required.</param>
                    /// <param name="historyId">A History id.
                    ///
                    /// Required.</param>
                    /// <param name="executionId">A Execution id.
                    ///
                    /// Required.</param>
                    /// <param name="stepId">A Step id.
                    ///
                    /// Required.</param>
                    public virtual GetRequest Get(string projectId, string historyId, string executionId, string stepId)
                    {
                        return new GetRequest(service, projectId, historyId, executionId, stepId);
                    }

                    /// <summary>Gets a Step.
                    ///
                    /// May return any of the following canonical error codes:
                    ///
                    /// - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the
                    /// request is malformed - NOT_FOUND - if the Step does not exist</summary>
                    public class GetRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.Step>
                    {
                        /// <summary>Constructs a new Get request.</summary>
                        public GetRequest(Google.Apis.Services.IClientService service, string projectId, string historyId, string executionId, string stepId)
                            : base(service)
                        {
                            ProjectId = projectId;
                            HistoryId = historyId;
                            ExecutionId = executionId;
                            StepId = stepId;
                            InitParameters();
                        }


                        /// <summary>A Project id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ProjectId { get; private set; }

                        /// <summary>A History id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string HistoryId { get; private set; }

                        /// <summary>A Execution id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ExecutionId { get; private set; }

                        /// <summary>A Step id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("stepId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string StepId { get; private set; }


                        ///<summary>Gets the method name.</summary>
                        public override string MethodName
                        {
                            get { return "get"; }
                        }

                        ///<summary>Gets the HTTP method.</summary>
                        public override string HttpMethod
                        {
                            get { return "GET"; }
                        }

                        ///<summary>Gets the REST path.</summary>
                        public override string RestPath
                        {
                            get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}"; }
                        }

                        /// <summary>Initializes Get parameter list.</summary>
                        protected override void InitParameters()
                        {
                            base.InitParameters();

                            RequestParameters.Add(
                                "projectId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "projectId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "historyId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "historyId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "executionId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "executionId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "stepId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "stepId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                        }

                    }

                    /// <summary>Retrieves a PerfMetricsSummary.
                    ///
                    /// May return any of the following error code(s): - NOT_FOUND - The specified PerfMetricsSummary
                    /// does not exist</summary>
                    /// <param name="projectId">The cloud project</param>
                    /// <param name="historyId">A tool results history
                    /// ID.</param>
                    /// <param name="executionId">A tool results execution ID.</param>
                    /// <param name="stepId">A
                    /// tool results step ID.</param>
                    public virtual GetPerfMetricsSummaryRequest GetPerfMetricsSummary(string projectId, string historyId, string executionId, string stepId)
                    {
                        return new GetPerfMetricsSummaryRequest(service, projectId, historyId, executionId, stepId);
                    }

                    /// <summary>Retrieves a PerfMetricsSummary.
                    ///
                    /// May return any of the following error code(s): - NOT_FOUND - The specified PerfMetricsSummary
                    /// does not exist</summary>
                    public class GetPerfMetricsSummaryRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.PerfMetricsSummary>
                    {
                        /// <summary>Constructs a new GetPerfMetricsSummary request.</summary>
                        public GetPerfMetricsSummaryRequest(Google.Apis.Services.IClientService service, string projectId, string historyId, string executionId, string stepId)
                            : base(service)
                        {
                            ProjectId = projectId;
                            HistoryId = historyId;
                            ExecutionId = executionId;
                            StepId = stepId;
                            InitParameters();
                        }


                        /// <summary>The cloud project</summary>
                        [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ProjectId { get; private set; }

                        /// <summary>A tool results history ID.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string HistoryId { get; private set; }

                        /// <summary>A tool results execution ID.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ExecutionId { get; private set; }

                        /// <summary>A tool results step ID.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("stepId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string StepId { get; private set; }


                        ///<summary>Gets the method name.</summary>
                        public override string MethodName
                        {
                            get { return "getPerfMetricsSummary"; }
                        }

                        ///<summary>Gets the HTTP method.</summary>
                        public override string HttpMethod
                        {
                            get { return "GET"; }
                        }

                        ///<summary>Gets the REST path.</summary>
                        public override string RestPath
                        {
                            get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}/perfMetricsSummary"; }
                        }

                        /// <summary>Initializes GetPerfMetricsSummary parameter list.</summary>
                        protected override void InitParameters()
                        {
                            base.InitParameters();

                            RequestParameters.Add(
                                "projectId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "projectId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "historyId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "historyId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "executionId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "executionId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "stepId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "stepId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                        }

                    }

                    /// <summary>Lists Steps for a given Execution.
                    ///
                    /// The steps are sorted by creation_time in descending order. The step_id key will be used to order
                    /// the steps with the same creation_time.
                    ///
                    /// May return any of the following canonical error codes:
                    ///
                    /// - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the
                    /// request is malformed - FAILED_PRECONDITION - if an argument in the request happens to be
                    /// invalid; e.g. if an attempt is made to list the children of a nonexistent Step - NOT_FOUND - if
                    /// the containing Execution does not exist</summary>
                    /// <param name="projectId">A Project id.
                    ///
                    /// Required.</param>
                    /// <param name="historyId">A History id.
                    ///
                    /// Required.</param>
                    /// <param name="executionId">A Execution id.
                    ///
                    /// Required.</param>
                    public virtual ListRequest List(string projectId, string historyId, string executionId)
                    {
                        return new ListRequest(service, projectId, historyId, executionId);
                    }

                    /// <summary>Lists Steps for a given Execution.
                    ///
                    /// The steps are sorted by creation_time in descending order. The step_id key will be used to order
                    /// the steps with the same creation_time.
                    ///
                    /// May return any of the following canonical error codes:
                    ///
                    /// - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the
                    /// request is malformed - FAILED_PRECONDITION - if an argument in the request happens to be
                    /// invalid; e.g. if an attempt is made to list the children of a nonexistent Step - NOT_FOUND - if
                    /// the containing Execution does not exist</summary>
                    public class ListRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.ListStepsResponse>
                    {
                        /// <summary>Constructs a new List request.</summary>
                        public ListRequest(Google.Apis.Services.IClientService service, string projectId, string historyId, string executionId)
                            : base(service)
                        {
                            ProjectId = projectId;
                            HistoryId = historyId;
                            ExecutionId = executionId;
                            InitParameters();
                        }


                        /// <summary>A Project id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ProjectId { get; private set; }

                        /// <summary>A History id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string HistoryId { get; private set; }

                        /// <summary>A Execution id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ExecutionId { get; private set; }

                        /// <summary>The maximum number of Steps to fetch.
                        ///
                        /// Default value: 25. The server will use this default if the field is not set or has a value
                        /// of 0.
                        ///
                        /// Optional.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                        public virtual System.Nullable<int> PageSize { get; set; }

                        /// <summary>A continuation token to resume the query at the next item.
                        ///
                        /// Optional.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                        public virtual string PageToken { get; set; }


                        ///<summary>Gets the method name.</summary>
                        public override string MethodName
                        {
                            get { return "list"; }
                        }

                        ///<summary>Gets the HTTP method.</summary>
                        public override string HttpMethod
                        {
                            get { return "GET"; }
                        }

                        ///<summary>Gets the REST path.</summary>
                        public override string RestPath
                        {
                            get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps"; }
                        }

                        /// <summary>Initializes List parameter list.</summary>
                        protected override void InitParameters()
                        {
                            base.InitParameters();

                            RequestParameters.Add(
                                "projectId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "projectId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "historyId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "historyId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "executionId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "executionId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "pageSize", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "pageSize",
                                    IsRequired = false,
                                    ParameterType = "query",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "pageToken", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "pageToken",
                                    IsRequired = false,
                                    ParameterType = "query",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                        }

                    }

                    /// <summary>Updates an existing Step with the supplied partial entity.
                    ///
                    /// May return any of the following canonical error codes:
                    ///
                    /// - PERMISSION_DENIED - if the user is not authorized to write project - INVALID_ARGUMENT - if the
                    /// request is malformed - FAILED_PRECONDITION - if the requested state transition is illegal (e.g
                    /// try to upload a duplicate xml file), if the updated step is too large (more than 10Mib) -
                    /// NOT_FOUND - if the containing Execution does not exist</summary>
                    /// <param name="body">The body of the request.</param>
                    /// <param name="projectId">A Project id.
                    ///
                    /// Required.</param>
                    /// <param name="historyId">A History id.
                    ///
                    /// Required.</param>
                    /// <param name="executionId">A Execution id.
                    ///
                    /// Required.</param>
                    /// <param name="stepId">A Step id.
                    ///
                    /// Required.</param>
                    public virtual PatchRequest Patch(Google.Apis.ToolResults.v1beta3firstparty.Data.Step body, string projectId, string historyId, string executionId, string stepId)
                    {
                        return new PatchRequest(service, body, projectId, historyId, executionId, stepId);
                    }

                    /// <summary>Updates an existing Step with the supplied partial entity.
                    ///
                    /// May return any of the following canonical error codes:
                    ///
                    /// - PERMISSION_DENIED - if the user is not authorized to write project - INVALID_ARGUMENT - if the
                    /// request is malformed - FAILED_PRECONDITION - if the requested state transition is illegal (e.g
                    /// try to upload a duplicate xml file), if the updated step is too large (more than 10Mib) -
                    /// NOT_FOUND - if the containing Execution does not exist</summary>
                    public class PatchRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.Step>
                    {
                        /// <summary>Constructs a new Patch request.</summary>
                        public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ToolResults.v1beta3firstparty.Data.Step body, string projectId, string historyId, string executionId, string stepId)
                            : base(service)
                        {
                            ProjectId = projectId;
                            HistoryId = historyId;
                            ExecutionId = executionId;
                            StepId = stepId;
                            Body = body;
                            InitParameters();
                        }


                        /// <summary>A Project id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ProjectId { get; private set; }

                        /// <summary>A History id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string HistoryId { get; private set; }

                        /// <summary>A Execution id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ExecutionId { get; private set; }

                        /// <summary>A Step id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("stepId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string StepId { get; private set; }

                        /// <summary>A unique request ID for server to detect duplicated requests. For example, a UUID.
                        ///
                        /// Optional, but strongly recommended.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("requestId", Google.Apis.Util.RequestParameterType.Query)]
                        public virtual string RequestId { get; set; }


                        /// <summary>Gets or sets the body of this request.</summary>
                        Google.Apis.ToolResults.v1beta3firstparty.Data.Step Body { get; set; }

                        ///<summary>Returns the body of the request.</summary>
                        protected override object GetBody() { return Body; }

                        ///<summary>Gets the method name.</summary>
                        public override string MethodName
                        {
                            get { return "patch"; }
                        }

                        ///<summary>Gets the HTTP method.</summary>
                        public override string HttpMethod
                        {
                            get { return "PATCH"; }
                        }

                        ///<summary>Gets the REST path.</summary>
                        public override string RestPath
                        {
                            get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}"; }
                        }

                        /// <summary>Initializes Patch parameter list.</summary>
                        protected override void InitParameters()
                        {
                            base.InitParameters();

                            RequestParameters.Add(
                                "projectId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "projectId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "historyId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "historyId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "executionId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "executionId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "stepId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "stepId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "requestId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "requestId",
                                    IsRequired = false,
                                    ParameterType = "query",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                        }

                    }

                    /// <summary>Publish xml files to an existing Step.
                    ///
                    /// May return any of the following canonical error codes:
                    ///
                    /// - PERMISSION_DENIED - if the user is not authorized to write project - INVALID_ARGUMENT - if the
                    /// request is malformed - FAILED_PRECONDITION - if the requested state transition is illegal, e.g
                    /// try to upload a duplicate xml file or a file too large. - NOT_FOUND - if the containing
                    /// Execution does not exist</summary>
                    /// <param name="body">The body of the request.</param>
                    /// <param name="projectId">A Project id.
                    ///
                    /// Required.</param>
                    /// <param name="historyId">A History id.
                    ///
                    /// Required.</param>
                    /// <param name="executionId">A Execution id.
                    ///
                    /// Required.</param>
                    /// <param name="stepId">A Step id. Note: This step must include a TestExecutionStep.
                    ///
                    /// Required.</param>
                    public virtual PublishXunitXmlFilesRequest PublishXunitXmlFiles(Google.Apis.ToolResults.v1beta3firstparty.Data.PublishXunitXmlFilesRequest body, string projectId, string historyId, string executionId, string stepId)
                    {
                        return new PublishXunitXmlFilesRequest(service, body, projectId, historyId, executionId, stepId);
                    }

                    /// <summary>Publish xml files to an existing Step.
                    ///
                    /// May return any of the following canonical error codes:
                    ///
                    /// - PERMISSION_DENIED - if the user is not authorized to write project - INVALID_ARGUMENT - if the
                    /// request is malformed - FAILED_PRECONDITION - if the requested state transition is illegal, e.g
                    /// try to upload a duplicate xml file or a file too large. - NOT_FOUND - if the containing
                    /// Execution does not exist</summary>
                    public class PublishXunitXmlFilesRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.Step>
                    {
                        /// <summary>Constructs a new PublishXunitXmlFiles request.</summary>
                        public PublishXunitXmlFilesRequest(Google.Apis.Services.IClientService service, Google.Apis.ToolResults.v1beta3firstparty.Data.PublishXunitXmlFilesRequest body, string projectId, string historyId, string executionId, string stepId)
                            : base(service)
                        {
                            ProjectId = projectId;
                            HistoryId = historyId;
                            ExecutionId = executionId;
                            StepId = stepId;
                            Body = body;
                            InitParameters();
                        }


                        /// <summary>A Project id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ProjectId { get; private set; }

                        /// <summary>A History id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string HistoryId { get; private set; }

                        /// <summary>A Execution id.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ExecutionId { get; private set; }

                        /// <summary>A Step id. Note: This step must include a TestExecutionStep.
                        ///
                        /// Required.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("stepId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string StepId { get; private set; }


                        /// <summary>Gets or sets the body of this request.</summary>
                        Google.Apis.ToolResults.v1beta3firstparty.Data.PublishXunitXmlFilesRequest Body { get; set; }

                        ///<summary>Returns the body of the request.</summary>
                        protected override object GetBody() { return Body; }

                        ///<summary>Gets the method name.</summary>
                        public override string MethodName
                        {
                            get { return "publishXunitXmlFiles"; }
                        }

                        ///<summary>Gets the HTTP method.</summary>
                        public override string HttpMethod
                        {
                            get { return "POST"; }
                        }

                        ///<summary>Gets the REST path.</summary>
                        public override string RestPath
                        {
                            get { return "{projectId}/histories/{historyId}/executions/{executionId}/steps/{stepId}:publishXunitXmlFiles"; }
                        }

                        /// <summary>Initializes PublishXunitXmlFiles parameter list.</summary>
                        protected override void InitParameters()
                        {
                            base.InitParameters();

                            RequestParameters.Add(
                                "projectId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "projectId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "historyId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "historyId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "executionId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "executionId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "stepId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "stepId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                        }

                    }
                }

                /// <summary>Creates an Execution.
                ///
                /// The returned Execution will have the id set.
                ///
                /// May return any of the following canonical error codes:
                ///
                /// - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the
                /// request is malformed - NOT_FOUND - if the containing History does not exist</summary>
                /// <param name="body">The body of the request.</param>
                /// <param name="projectId">A Project id.
                ///
                /// Required.</param>
                /// <param name="historyId">A History id.
                ///
                /// Required.</param>
                public virtual CreateRequest Create(Google.Apis.ToolResults.v1beta3firstparty.Data.Execution body, string projectId, string historyId)
                {
                    return new CreateRequest(service, body, projectId, historyId);
                }

                /// <summary>Creates an Execution.
                ///
                /// The returned Execution will have the id set.
                ///
                /// May return any of the following canonical error codes:
                ///
                /// - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the
                /// request is malformed - NOT_FOUND - if the containing History does not exist</summary>
                public class CreateRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.Execution>
                {
                    /// <summary>Constructs a new Create request.</summary>
                    public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.ToolResults.v1beta3firstparty.Data.Execution body, string projectId, string historyId)
                        : base(service)
                    {
                        ProjectId = projectId;
                        HistoryId = historyId;
                        Body = body;
                        InitParameters();
                    }


                    /// <summary>A Project id.
                    ///
                    /// Required.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>A History id.
                    ///
                    /// Required.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string HistoryId { get; private set; }

                    /// <summary>A unique request ID for server to detect duplicated requests. For example, a UUID.
                    ///
                    /// Optional, but strongly recommended.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("requestId", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string RequestId { get; set; }


                    /// <summary>Gets or sets the body of this request.</summary>
                    Google.Apis.ToolResults.v1beta3firstparty.Data.Execution Body { get; set; }

                    ///<summary>Returns the body of the request.</summary>
                    protected override object GetBody() { return Body; }

                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "create"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "POST"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "{projectId}/histories/{historyId}/executions"; }
                    }

                    /// <summary>Initializes Create parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "historyId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "historyId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "requestId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "requestId",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Gets an Execution.
                ///
                /// May return any of the following canonical error codes:
                ///
                /// - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the
                /// request is malformed - NOT_FOUND - if the Execution does not exist</summary>
                /// <param name="projectId">A Project id.
                ///
                /// Required.</param>
                /// <param name="historyId">A History id.
                ///
                /// Required.</param>
                /// <param name="executionId">An Execution id.
                ///
                /// Required.</param>
                public virtual GetRequest Get(string projectId, string historyId, string executionId)
                {
                    return new GetRequest(service, projectId, historyId, executionId);
                }

                /// <summary>Gets an Execution.
                ///
                /// May return any of the following canonical error codes:
                ///
                /// - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the
                /// request is malformed - NOT_FOUND - if the Execution does not exist</summary>
                public class GetRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.Execution>
                {
                    /// <summary>Constructs a new Get request.</summary>
                    public GetRequest(Google.Apis.Services.IClientService service, string projectId, string historyId, string executionId)
                        : base(service)
                    {
                        ProjectId = projectId;
                        HistoryId = historyId;
                        ExecutionId = executionId;
                        InitParameters();
                    }


                    /// <summary>A Project id.
                    ///
                    /// Required.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>A History id.
                    ///
                    /// Required.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string HistoryId { get; private set; }

                    /// <summary>An Execution id.
                    ///
                    /// Required.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ExecutionId { get; private set; }


                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "get"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "{projectId}/histories/{historyId}/executions/{executionId}"; }
                    }

                    /// <summary>Initializes Get parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "historyId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "historyId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "executionId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "executionId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Lists Histories for a given Project.
                ///
                /// The executions are sorted by creation_time in descending order. The execution_id key will be used to
                /// order the executions with the same creation_time.
                ///
                /// May return any of the following canonical error codes:
                ///
                /// - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the
                /// request is malformed - NOT_FOUND - if the containing History does not exist</summary>
                /// <param name="projectId">A Project id.
                ///
                /// Required.</param>
                /// <param name="historyId">A History id.
                ///
                /// Required.</param>
                public virtual ListRequest List(string projectId, string historyId)
                {
                    return new ListRequest(service, projectId, historyId);
                }

                /// <summary>Lists Histories for a given Project.
                ///
                /// The executions are sorted by creation_time in descending order. The execution_id key will be used to
                /// order the executions with the same creation_time.
                ///
                /// May return any of the following canonical error codes:
                ///
                /// - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the
                /// request is malformed - NOT_FOUND - if the containing History does not exist</summary>
                public class ListRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.ListExecutionsResponse>
                {
                    /// <summary>Constructs a new List request.</summary>
                    public ListRequest(Google.Apis.Services.IClientService service, string projectId, string historyId)
                        : base(service)
                    {
                        ProjectId = projectId;
                        HistoryId = historyId;
                        InitParameters();
                    }


                    /// <summary>A Project id.
                    ///
                    /// Required.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>A History id.
                    ///
                    /// Required.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string HistoryId { get; private set; }

                    /// <summary>The maximum number of Executions to fetch.
                    ///
                    /// Default value: 25. The server will use this default if the field is not set or has a value of 0.
                    ///
                    /// Optional.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual System.Nullable<int> PageSize { get; set; }

                    /// <summary>A continuation token to resume the query at the next item.
                    ///
                    /// Optional.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string PageToken { get; set; }


                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "list"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "{projectId}/histories/{historyId}/executions"; }
                    }

                    /// <summary>Initializes List parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "historyId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "historyId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageSize", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageSize",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageToken", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageToken",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Updates an existing Execution with the supplied partial entity.
                ///
                /// May return any of the following canonical error codes:
                ///
                /// - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the
                /// request is malformed - FAILED_PRECONDITION - if the requested state transition is illegal -
                /// NOT_FOUND - if the containing History does not exist</summary>
                /// <param name="body">The body of the request.</param>
                /// <param name="projectId">A Project id. Required.</param>
                /// <param name="historyId">Required.</param>
                ///
                /// <param name="executionId">Required.</param>
                public virtual PatchRequest Patch(Google.Apis.ToolResults.v1beta3firstparty.Data.Execution body, string projectId, string historyId, string executionId)
                {
                    return new PatchRequest(service, body, projectId, historyId, executionId);
                }

                /// <summary>Updates an existing Execution with the supplied partial entity.
                ///
                /// May return any of the following canonical error codes:
                ///
                /// - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the
                /// request is malformed - FAILED_PRECONDITION - if the requested state transition is illegal -
                /// NOT_FOUND - if the containing History does not exist</summary>
                public class PatchRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.Execution>
                {
                    /// <summary>Constructs a new Patch request.</summary>
                    public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ToolResults.v1beta3firstparty.Data.Execution body, string projectId, string historyId, string executionId)
                        : base(service)
                    {
                        ProjectId = projectId;
                        HistoryId = historyId;
                        ExecutionId = executionId;
                        Body = body;
                        InitParameters();
                    }


                    /// <summary>A Project id. Required.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string HistoryId { get; private set; }

                    /// <summary>Required.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("executionId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ExecutionId { get; private set; }

                    /// <summary>A unique request ID for server to detect duplicated requests. For example, a UUID.
                    ///
                    /// Optional, but strongly recommended.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("requestId", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string RequestId { get; set; }


                    /// <summary>Gets or sets the body of this request.</summary>
                    Google.Apis.ToolResults.v1beta3firstparty.Data.Execution Body { get; set; }

                    ///<summary>Returns the body of the request.</summary>
                    protected override object GetBody() { return Body; }

                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "patch"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "PATCH"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "{projectId}/histories/{historyId}/executions/{executionId}"; }
                    }

                    /// <summary>Initializes Patch parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "historyId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "historyId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "executionId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "executionId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "requestId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "requestId",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }
            }

            /// <summary>Creates a History.
            ///
            /// The returned History will have the id set.
            ///
            /// May return any of the following canonical error codes:
            ///
            /// - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the
            /// request is malformed - NOT_FOUND - if the containing project does not exist</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="projectId">A Project id.
            ///
            /// Required.</param>
            public virtual CreateRequest Create(Google.Apis.ToolResults.v1beta3firstparty.Data.History body, string projectId)
            {
                return new CreateRequest(service, body, projectId);
            }

            /// <summary>Creates a History.
            ///
            /// The returned History will have the id set.
            ///
            /// May return any of the following canonical error codes:
            ///
            /// - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the
            /// request is malformed - NOT_FOUND - if the containing project does not exist</summary>
            public class CreateRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.History>
            {
                /// <summary>Constructs a new Create request.</summary>
                public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.ToolResults.v1beta3firstparty.Data.History body, string projectId)
                    : base(service)
                {
                    ProjectId = projectId;
                    Body = body;
                    InitParameters();
                }


                /// <summary>A Project id.
                ///
                /// Required.</summary>
                [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string ProjectId { get; private set; }

                /// <summary>A unique request ID for server to detect duplicated requests. For example, a UUID.
                ///
                /// Optional, but strongly recommended.</summary>
                [Google.Apis.Util.RequestParameterAttribute("requestId", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string RequestId { get; set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.ToolResults.v1beta3firstparty.Data.History Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "create"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{projectId}/histories"; }
                }

                /// <summary>Initializes Create parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "projectId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "projectId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "requestId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "requestId",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Gets a History.
            ///
            /// May return any of the following canonical error codes:
            ///
            /// - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request
            /// is malformed - NOT_FOUND - if the History does not exist</summary>
            /// <param name="projectId">A Project id.
            ///
            /// Required.</param>
            /// <param name="historyId">A History id.
            ///
            /// Required.</param>
            public virtual GetRequest Get(string projectId, string historyId)
            {
                return new GetRequest(service, projectId, historyId);
            }

            /// <summary>Gets a History.
            ///
            /// May return any of the following canonical error codes:
            ///
            /// - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request
            /// is malformed - NOT_FOUND - if the History does not exist</summary>
            public class GetRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.History>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string projectId, string historyId)
                    : base(service)
                {
                    ProjectId = projectId;
                    HistoryId = historyId;
                    InitParameters();
                }


                /// <summary>A Project id.
                ///
                /// Required.</summary>
                [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string ProjectId { get; private set; }

                /// <summary>A History id.
                ///
                /// Required.</summary>
                [Google.Apis.Util.RequestParameterAttribute("historyId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string HistoryId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{projectId}/histories/{historyId}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "projectId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "projectId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "historyId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "historyId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Lists Histories for a given Project.
            ///
            /// The histories are sorted by modification time in descending order. The history_id key will be used to
            /// order the history with the same modification time.
            ///
            /// May return any of the following canonical error codes:
            ///
            /// - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request
            /// is malformed - NOT_FOUND - if the History does not exist</summary>
            /// <param name="projectId">A Project id.
            ///
            /// Required.</param>
            public virtual ListRequest List(string projectId)
            {
                return new ListRequest(service, projectId);
            }

            /// <summary>Lists Histories for a given Project.
            ///
            /// The histories are sorted by modification time in descending order. The history_id key will be used to
            /// order the history with the same modification time.
            ///
            /// May return any of the following canonical error codes:
            ///
            /// - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request
            /// is malformed - NOT_FOUND - if the History does not exist</summary>
            public class ListRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.ListHistoriesResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string projectId)
                    : base(service)
                {
                    ProjectId = projectId;
                    InitParameters();
                }


                /// <summary>A Project id.
                ///
                /// Required.</summary>
                [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string ProjectId { get; private set; }

                /// <summary>If set, only return histories with the given name.
                ///
                /// Optional.</summary>
                [Google.Apis.Util.RequestParameterAttribute("filterByName", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string FilterByName { get; set; }

                /// <summary>The maximum number of Histories to fetch.
                ///
                /// Default value: 20. The server will use this default if the field is not set or has a value of 0. Any
                /// value greater than 100 will be treated as 100.
                ///
                /// Optional.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<int> PageSize { get; set; }

                /// <summary>A continuation token to resume the query at the next item.
                ///
                /// Optional.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string PageToken { get; set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{projectId}/histories"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "projectId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "projectId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "filterByName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "filterByName",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageSize", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageSize",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageToken", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageToken",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }

        /// <summary>Gets the Tool Results settings for a project.
        ///
        /// May return any of the following canonical error codes:
        ///
        /// - PERMISSION_DENIED - if the user is not authorized to read from project</summary>
        /// <param name="projectId">A Project id.
        ///
        /// Required.</param>
        public virtual GetSettingsRequest GetSettings(string projectId)
        {
            return new GetSettingsRequest(service, projectId);
        }

        /// <summary>Gets the Tool Results settings for a project.
        ///
        /// May return any of the following canonical error codes:
        ///
        /// - PERMISSION_DENIED - if the user is not authorized to read from project</summary>
        public class GetSettingsRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.ProjectSettings>
        {
            /// <summary>Constructs a new GetSettings request.</summary>
            public GetSettingsRequest(Google.Apis.Services.IClientService service, string projectId)
                : base(service)
            {
                ProjectId = projectId;
                InitParameters();
            }


            /// <summary>A Project id.
            ///
            /// Required.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "getSettings"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectId}/settings"; }
            }

            /// <summary>Initializes GetSettings parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Creates resources for settings which have not yet been set.
        ///
        /// Currently, this creates a single resource: a Google Cloud Storage bucket, to be used as the default bucket
        /// for this project. The bucket is created in the name of the user calling. Except in rare cases, calling this
        /// method in parallel from multiple clients will only create a single bucket. In order to avoid unnecessary
        /// storage charges, the bucket is configured to automatically delete objects older than 90 days.
        ///
        /// The bucket is created with the project-private ACL: All project team members are given permissions to the
        /// bucket and objects created within it according to their roles. Project owners have owners rights, and so on.
        /// The default ACL on objects created in the bucket is project-private as well. See Google Cloud Storage
        /// documentation for more details.
        ///
        /// If there is already a default bucket set and the project can access the bucket, this call does nothing.
        /// However, if the project doesn't have the permission to access the bucket or the bucket is deteleted, a new
        /// bucket will be created.
        ///
        /// May return any canonical error codes, including the following:
        ///
        /// - PERMISSION_DENIED - if the user is not authorized to write to project - Any error code raised by Google
        /// Cloud Storage</summary>
        /// <param name="projectId">A Project id.
        ///
        /// Required.</param>
        public virtual InitializeSettingsRequest InitializeSettings(string projectId)
        {
            return new InitializeSettingsRequest(service, projectId);
        }

        /// <summary>Creates resources for settings which have not yet been set.
        ///
        /// Currently, this creates a single resource: a Google Cloud Storage bucket, to be used as the default bucket
        /// for this project. The bucket is created in the name of the user calling. Except in rare cases, calling this
        /// method in parallel from multiple clients will only create a single bucket. In order to avoid unnecessary
        /// storage charges, the bucket is configured to automatically delete objects older than 90 days.
        ///
        /// The bucket is created with the project-private ACL: All project team members are given permissions to the
        /// bucket and objects created within it according to their roles. Project owners have owners rights, and so on.
        /// The default ACL on objects created in the bucket is project-private as well. See Google Cloud Storage
        /// documentation for more details.
        ///
        /// If there is already a default bucket set and the project can access the bucket, this call does nothing.
        /// However, if the project doesn't have the permission to access the bucket or the bucket is deteleted, a new
        /// bucket will be created.
        ///
        /// May return any canonical error codes, including the following:
        ///
        /// - PERMISSION_DENIED - if the user is not authorized to write to project - Any error code raised by Google
        /// Cloud Storage</summary>
        public class InitializeSettingsRequest : ToolResultsBaseServiceRequest<Google.Apis.ToolResults.v1beta3firstparty.Data.ProjectSettings>
        {
            /// <summary>Constructs a new InitializeSettings request.</summary>
            public InitializeSettingsRequest(Google.Apis.Services.IClientService service, string projectId)
                : base(service)
            {
                ProjectId = projectId;
                InitParameters();
            }


            /// <summary>A Project id.
            ///
            /// Required.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "initializeSettings"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectId}:initializeSettings"; }
            }

            /// <summary>Initializes InitializeSettings parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }
}

namespace Google.Apis.ToolResults.v1beta3firstparty.Data
{    

    /// <summary>`Any` contains an arbitrary serialized protocol buffer message along with a URL that describes the type
    /// of the serialized message.
    ///
    /// Protobuf library provides support to pack/unpack Any values in the form of utility functions or additional
    /// generated methods of the Any type.
    ///
    /// Example 1: Pack and unpack a message in C++.
    ///
    /// Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo()) { ... }
    ///
    /// Example 2: Pack and unpack a message in Java.
    ///
    /// Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) { foo = any.unpack(Foo.class); }
    ///
    /// Example 3: Pack and unpack a message in Python.
    ///
    /// foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) ...
    ///
    /// The pack methods provided by protobuf library will by default use 'type.googleapis.com/full.type.name' as the
    /// type URL and the unpack methods only use the fully qualified type name after the last '/' in the type URL, for
    /// example "foo.bar.com/x/y.z" will yield type name "y.z".
    ///
    /// JSON ==== The JSON representation of an `Any` value uses the regular representation of the deserialized,
    /// embedded message, with an additional field `@type` which contains the type URL. Example:
    ///
    /// package google.profile; message Person { string first_name = 1; string last_name = 2; }
    ///
    /// { "@type": "type.googleapis.com/google.profile.Person", "firstName": , "lastName":  }
    ///
    /// If the embedded message type is well-known and has a custom JSON representation, that representation will be
    /// embedded adding a field `value` which holds the custom JSON in addition to the `@type` field. Example (for
    /// message [google.protobuf.Duration][]):
    ///
    /// { "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" }</summary>
    public class Any : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A URL/resource name whose content describes the type of the serialized protocol buffer message.
        ///
        /// For URLs which use the scheme `http`, `https`, or no scheme, the following restrictions and interpretations
        /// apply:
        ///
        /// * If no scheme is provided, `https` is assumed. * The last segment of the URL's path must represent the
        /// fully qualified name of the type (as in `path/google.protobuf.Duration`). The name should be in a canonical
        /// form (e.g., leading "." is not accepted). * An HTTP GET on the URL must yield a [google.protobuf.Type][]
        /// value in binary format, or produce an error. * Applications are allowed to cache lookup results based on the
        /// URL, or have them precompiled into a binary to avoid any lookup. Therefore, binary compatibility needs to be
        /// preserved on changes to types. (Use versioned type names to manage breaking changes.)
        ///
        /// Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific
        /// semantics.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("typeUrl")]
        public virtual string TypeUrl { get; set; } 

        /// <summary>Must be a valid serialized protocol buffer of the above specified type.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual string Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Encapsulates the metadata for basic sample series represented by a line chart</summary>
    public class BasicPerfSampleSeries : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("perfMetricType")]
        public virtual string PerfMetricType { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("perfUnit")]
        public virtual string PerfUnit { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("sampleSeriesLabel")]
        public virtual string SampleSeriesLabel { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The request must provide up to a maximum of 5000 samples to be created; a larger sample size will cause
    /// an INVALID_ARGUMENT error</summary>
    public class BatchCreatePerfSamplesRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The set of PerfSamples to create should not include existing timestamps</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("perfSamples")]
        public virtual System.Collections.Generic.IList<PerfSample> PerfSamples { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class BatchCreatePerfSamplesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("perfSamples")]
        public virtual System.Collections.Generic.IList<PerfSample> PerfSamples { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class CPUInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>description of the device processor ie '1.8 GHz hexa core 64-bit ARMv8-A'</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cpuProcessor")]
        public virtual string CpuProcessor { get; set; } 

        /// <summary>the CPU clock speed in GHz</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cpuSpeedInGhz")]
        public virtual System.Nullable<float> CpuSpeedInGhz { get; set; } 

        /// <summary>the number of CPU cores</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("numberOfCores")]
        public virtual System.Nullable<int> NumberOfCores { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Duration represents a signed, fixed-length span of time represented as a count of seconds and
    /// fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or
    /// "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can
    /// be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
    ///
    /// # Examples
    ///
    /// Example 1: Compute Duration from two Timestamps in pseudo code.
    ///
    /// Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
    ///
    /// duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos;
    ///
    /// if (duration.seconds  0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (durations.seconds > 0
    /// && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; }
    ///
    /// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
    ///
    /// Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
    ///
    /// end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos;
    ///
    /// if (end.nanos = 1000000000) { end.seconds += 1; end.nanos -= 1000000000; }
    ///
    /// Example 3: Compute Duration from datetime.timedelta in Python.
    ///
    /// td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td)
    ///
    /// # JSON Mapping
    ///
    /// In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the
    /// suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as
    /// fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3
    /// seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond
    /// should be expressed in JSON format as "3.000001s".</summary>
    public class Duration : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Signed fractions of a second at nanosecond resolution of the span of time. Durations less than one
        /// second are represented with a 0 `seconds` field and a positive or negative `nanos` field. For durations of
        /// one second or more, a non-zero value for the `nanos` field must be of the same sign as the `seconds` field.
        /// Must be from -999,999,999 to +999,999,999 inclusive.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nanos")]
        public virtual System.Nullable<int> Nanos { get; set; } 

        /// <summary>Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,000,000
        /// inclusive.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("seconds")]
        public virtual System.Nullable<long> Seconds { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An Execution represents a collection of Steps. For instance, it could represent: - a mobile test
    /// executed across a range of device configurations - a jenkins job with a build step followed by a test step
    ///
    /// The maximum size of an execution message is 1 MiB.
    ///
    /// An Execution can be updated until its state is set to COMPLETE at which point it becomes immutable.</summary>
    public class Execution : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The time when the Execution status transitioned to COMPLETE.
        ///
        /// This value will be set automatically when state transitions to COMPLETE.
        ///
        /// - In response: set if the execution state is COMPLETE. - In create/update request: never set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("completionTime")]
        public virtual Timestamp CompletionTime { get; set; } 

        /// <summary>The time when the Execution was created.
        ///
        /// This value will be set automatically when CreateExecution is called.
        ///
        /// - In response: always set - In create/update request: never set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("creationTime")]
        public virtual Timestamp CreationTime { get; set; } 

        /// <summary>A unique identifier within a History for this Execution.
        ///
        /// Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
        ///
        /// - In response always set - In create/update request: never set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionId")]
        public virtual string ExecutionId { get; set; } 

        /// <summary>Classify the result, for example into SUCCESS or FAILURE
        ///
        /// - In response: present if set by create/update request - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("outcome")]
        public virtual Outcome Outcome { get; set; } 

        /// <summary>The initial state is IN_PROGRESS.
        ///
        /// The only legal state transitions is from IN_PROGRESS to COMPLETE.
        ///
        /// A PRECONDITION_FAILED will be returned if an invalid transition is requested.
        ///
        /// The state can only be set to COMPLETE once. A FAILED_PRECONDITION will be returned if the state is set to
        /// COMPLETE multiple times.
        ///
        /// If the state is set to COMPLETE, all the in-progress steps within the execution will be set as COMPLETE. If
        /// the outcome of the step is not set, the outcome will be set to INCONCLUSIVE.
        ///
        /// - In response always set - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("state")]
        public virtual string State { get; set; } 

        /// <summary>TestExecution Matrix ID that the Test Service uses.
        ///
        /// - In response: present if set by create - In create: optional - In update: never set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("testExecutionMatrixId")]
        public virtual string TestExecutionMatrixId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class FailureDetail : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>If the failure was severe because the system under test crashed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("crashed")]
        public virtual System.Nullable<bool> Crashed { get; set; } 

        /// <summary>If an app is not installed and thus no test can be run with the app. This might be caused by trying
        /// to run a test on an unsupported platform.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("notInstalled")]
        public virtual System.Nullable<bool> NotInstalled { get; set; } 

        /// <summary>If a native process other than the app crashed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("otherNativeCrash")]
        public virtual System.Nullable<bool> OtherNativeCrash { get; set; } 

        /// <summary>If the test overran some time limit, and that is why it failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("timedOut")]
        public virtual System.Nullable<bool> TimedOut { get; set; } 

        /// <summary>If the robo was unable to crawl the app; perhaps because the app did not start.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unableToCrawl")]
        public virtual System.Nullable<bool> UnableToCrawl { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A reference to a file.</summary>
    public class FileReference : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The URI of a file stored in Google Cloud Storage.
        ///
        /// For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in gsutil format:
        /// gs://mybucket/path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#1360383693690000
        ///
        /// An INVALID_ARGUMENT error will be returned if the URI format is not supported.
        ///
        /// - In response: always set - In create/update request: always set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fileUri")]
        public virtual string FileUri { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A History represents a sorted list of Executions ordered by the start_timestamp_millis field
    /// (descending). It can be used to group all the Executions of a continuous build.
    ///
    /// Note that the ordering only operates on one-dimension. If a repository has multiple branches, it means that
    /// multiple histories will need to be used in order to order Executions per branch.</summary>
    public class History : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A short human-readable (plain text) name to display in the UI. Maximum of 100 characters.
        ///
        /// - In response: present if set during create. - In create request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
        public virtual string DisplayName { get; set; } 

        /// <summary>A unique identifier within a project for this History.
        ///
        /// Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
        ///
        /// - In response always set - In create request: never set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("historyId")]
        public virtual string HistoryId { get; set; } 

        /// <summary>A name to uniquely identify a history within a project. Maximum of 100 characters.
        ///
        /// - In response always set - In create request: always set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An image, with a link to the main image and a thumbnail.</summary>
    public class Image : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>An error explaining why the thumbnail could not be rendered.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("error")]
        public virtual Status Error { get; set; } 

        /// <summary>A reference to the full-size, original image.
        ///
        /// This is the same as the tool_outputs entry for the image under its Step.
        ///
        /// Always set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sourceImage")]
        public virtual ToolOutputReference SourceImage { get; set; } 

        /// <summary>The step to which the image is attached.
        ///
        /// Always set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("stepId")]
        public virtual string StepId { get; set; } 

        /// <summary>The thumbnail.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("thumbnail")]
        public virtual Thumbnail Thumbnail { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InconclusiveDetail : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>If the end user aborted the test execution before a pass or fail could be determined. For example,
        /// the user pressed ctrl-c which sent a kill signal to the test runner while the test was running.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("abortedByUser")]
        public virtual System.Nullable<bool> AbortedByUser { get; set; } 

        /// <summary>If the test runner could not determine success or failure because the test depends on a component
        /// other than the system under test which failed.
        ///
        /// For example, a mobile test requires provisioning a device where the test executes, and that provisioning can
        /// fail.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("infrastructureFailure")]
        public virtual System.Nullable<bool> InfrastructureFailure { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ListExecutionsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Executions.
        ///
        /// Always set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executions")]
        public virtual System.Collections.Generic.IList<Execution> Executions { get; set; } 

        /// <summary>A continuation token to resume the query at the next item.
        ///
        /// Will only be set if there are more Executions to fetch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response message for HistoryService.List</summary>
    public class ListHistoriesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Histories.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("histories")]
        public virtual System.Collections.Generic.IList<History> Histories { get; set; } 

        /// <summary>A continuation token to resume the query at the next item.
        ///
        /// Will only be set if there are more histories to fetch.
        ///
        /// Tokens are valid for up to one hour from the time of the first list request. For instance, if you make a
        /// list request at 1PM and use the token from this first request 10 minutes later, the token from this second
        /// response will only be valid for 50 minutes.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ListPerfSampleSeriesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The resulting PerfSampleSeries sorted by id</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("perfSampleSeries")]
        public virtual System.Collections.Generic.IList<PerfSampleSeries> PerfSampleSeries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ListPerfSamplesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional, returned if result size exceeds the page size specified in the request (or the default
        /// page size, 500, if unspecified). It indicates the last sample timestamp to be used as page_token in
        /// subsequent request</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("perfSamples")]
        public virtual System.Collections.Generic.IList<PerfSample> PerfSamples { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A response containing the thumbnails in a step.</summary>
    public class ListStepThumbnailsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A continuation token to resume the query at the next item.
        ///
        /// If set, indicates that there are more thumbnails to read, by calling list again with this value in the
        /// page_token field.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>A list of image data.
        ///
        /// Images are returned in a deterministic order; they are ordered by these factors, in order of importance: *
        /// First, by their associated test case. Images without a test case are considered greater than images with
        /// one. * Second, by their creation time. Images without a creation time are greater than images with one. *
        /// Third, by the order in which they were added to the step (by calls to CreateStep or UpdateStep).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("thumbnails")]
        public virtual System.Collections.Generic.IList<Image> Thumbnails { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response message for StepService.List.</summary>
    public class ListStepsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A continuation token to resume the query at the next item.
        ///
        /// If set, indicates that there are more steps to read, by calling list again with this value in the page_token
        /// field.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>Steps.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("steps")]
        public virtual System.Collections.Generic.IList<Step> Steps { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class MemoryInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Maximum memory that can be allocated to the process in KiB</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("memoryCapInKibibyte")]
        public virtual System.Nullable<long> MemoryCapInKibibyte { get; set; } 

        /// <summary>Total memory available on the device in KiB</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("memoryTotalInKibibyte")]
        public virtual System.Nullable<long> MemoryTotalInKibibyte { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Interprets a result so that humans and machines can act on it.</summary>
    public class Outcome : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>More information about a FAILURE outcome.
        ///
        /// Returns INVALID_ARGUMENT if this field is set but the summary is not FAILURE.
        ///
        /// Optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("failureDetail")]
        public virtual FailureDetail FailureDetail { get; set; } 

        /// <summary>More information about an INCONCLUSIVE outcome.
        ///
        /// Returns INVALID_ARGUMENT if this field is set but the summary is not INCONCLUSIVE.
        ///
        /// Optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("inconclusiveDetail")]
        public virtual InconclusiveDetail InconclusiveDetail { get; set; } 

        /// <summary>More information about a SKIPPED outcome.
        ///
        /// Returns INVALID_ARGUMENT if this field is set but the summary is not SKIPPED.
        ///
        /// Optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("skippedDetail")]
        public virtual SkippedDetail SkippedDetail { get; set; } 

        /// <summary>More information about a SUCCESS outcome.
        ///
        /// Returns INVALID_ARGUMENT if this field is set but the summary is not SUCCESS.
        ///
        /// Optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("successDetail")]
        public virtual SuccessDetail SuccessDetail { get; set; } 

        /// <summary>The simplest way to interpret a result.
        ///
        /// Required</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("summary")]
        public virtual string Summary { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Encapsulates performance environment info</summary>
    public class PerfEnvironment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>CPU related environment info</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cpuInfo")]
        public virtual CPUInfo CpuInfo { get; set; } 

        /// <summary>Memory related environment info</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("memoryInfo")]
        public virtual MemoryInfo MemoryInfo { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A summary of perf metrics collected and performance environment info</summary>
    public class PerfMetricsSummary : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A tool results execution ID.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionId")]
        public virtual string ExecutionId { get; set; } 

        /// <summary>A tool results history ID.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("historyId")]
        public virtual string HistoryId { get; set; } 

        /// <summary>Describes the environment in which the performance metrics were collected</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("perfEnvironment")]
        public virtual PerfEnvironment PerfEnvironment { get; set; } 

        /// <summary>Set of resource collected</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("perfMetrics")]
        public virtual System.Collections.Generic.IList<string> PerfMetrics { get; set; } 

        /// <summary>The cloud project</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("projectId")]
        public virtual string ProjectId { get; set; } 

        /// <summary>A tool results step ID.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("stepId")]
        public virtual string StepId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Resource representing a single performance measure or data point</summary>
    public class PerfSample : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Timestamp of collection</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sampleTime")]
        public virtual Timestamp SampleTime { get; set; } 

        /// <summary>Value observed</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual System.Nullable<double> Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Resource representing a collection of performance samples (or data points)</summary>
    public class PerfSampleSeries : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Basic series represented by a line chart</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("basicPerfSampleSeries")]
        public virtual BasicPerfSampleSeries BasicPerfSampleSeries { get; set; } 

        /// <summary>A tool results execution ID.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionId")]
        public virtual string ExecutionId { get; set; } 

        /// <summary>A tool results history ID.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("historyId")]
        public virtual string HistoryId { get; set; } 

        /// <summary>The cloud project</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("projectId")]
        public virtual string ProjectId { get; set; } 

        /// <summary>A sample series id</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sampleSeriesId")]
        public virtual string SampleSeriesId { get; set; } 

        /// <summary>A tool results step ID.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("stepId")]
        public virtual string StepId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Per-project settings for the Tool Results service.</summary>
    public class ProjectSettings : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The name of the Google Cloud Storage bucket to which results are written.
        ///
        /// By default, this is unset.
        ///
        /// In update request: optional In response: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("defaultBucket")]
        public virtual string DefaultBucket { get; set; } 

        /// <summary>The name of the project's settings.
        ///
        /// Always of the form: projects/{project-id}/settings
        ///
        /// In update request: never set In response: always set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request message for StepService.PublishXunitXmlFiles.</summary>
    public class PublishXunitXmlFilesRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>URI of the Xunit XML files to publish.
        ///
        /// The maximum size of the file this reference is pointing to is 50MB.
        ///
        /// Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("xunitXmlFiles")]
        public virtual System.Collections.Generic.IList<FileReference> XunitXmlFiles { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class SkippedDetail : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>If the App doesn't support the specific API level.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("incompatibleAppVersion")]
        public virtual System.Nullable<bool> IncompatibleAppVersion { get; set; } 

        /// <summary>If the App doesn't run on the specific architecture, for example, x86.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("incompatibleArchitecture")]
        public virtual System.Nullable<bool> IncompatibleArchitecture { get; set; } 

        /// <summary>If the requested OS version doesn't run on the specific device model.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("incompatibleDevice")]
        public virtual System.Nullable<bool> IncompatibleDevice { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A stacktrace.</summary>
    public class StackTrace : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The stack trace message.
        ///
        /// Required</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("exception")]
        public virtual string Exception { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The `Status` type defines a logical error model that is suitable for different programming
    /// environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model
    /// is designed to be:
    ///
    /// - Simple to use and understand for most users - Flexible enough to meet unexpected needs
    ///
    /// # Overview
    ///
    /// The `Status` message contains three pieces of data: error code, error message, and error details. The error code
    /// should be an enum value of [google.rpc.Code][], but it may accept additional error codes if needed. The error
    /// message should be a developer-facing English message that helps developers *understand* and *resolve* the error.
    /// If a localized user-facing error message is needed, put the localized message in the error details or localize
    /// it in the client. The optional error details may contain arbitrary information about the error. There is a
    /// predefined set of error detail types in the package `google.rpc` which can be used for common error conditions.
    ///
    /// # Language mapping
    ///
    /// The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire
    /// format. When the `Status` message is exposed in different client libraries and different wire protocols, it can
    /// be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped
    /// to some error codes in C.
    ///
    /// # Other uses
    ///
    /// The error model and the `Status` message can be used in a variety of environments, either with or without APIs,
    /// to provide a consistent developer experience across different environments.
    ///
    /// Example uses of this error model include:
    ///
    /// - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the
    /// normal response to indicate the partial errors.
    ///
    /// - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error
    /// reporting purpose.
    ///
    /// - Batch operations. If a client uses batch request and batch response, the `Status` message should be used
    /// directly inside batch response, one for each error sub-response.
    ///
    /// - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of
    /// those operations should be represented directly using the `Status` message.
    ///
    /// - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any
    /// stripping needed for security/privacy reasons.</summary>
    public class Status : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The status code, which should be an enum value of [google.rpc.Code][].</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("code")]
        public virtual System.Nullable<int> Code { get; set; } 

        /// <summary>A list of messages that carry the error details. There will be a common set of message types for
        /// APIs to use.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("details")]
        public virtual System.Collections.Generic.IList<Any> Details { get; set; } 

        /// <summary>A developer-facing error message, which should be in English. Any user-facing error message should
        /// be localized and sent in the [google.rpc.Status.details][] field, or localized by the client.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("message")]
        public virtual string Message { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Step represents a single operation performed as part of Execution. A step can be used to represent
    /// the execution of a tool ( for example a test runner execution or an execution of a compiler).
    ///
    /// Steps can overlap (for instance two steps might have the same start time if some operations are done in
    /// parallel).
    ///
    /// Here is an example, let's consider that we have a continuous build is executing a test runner for each
    /// iteration. The workflow would look like: - user creates a Execution with id 1 - user creates an
    /// TestExecutionStep with id 100 for Execution 1 - user update TestExecutionStep with id 100 to add a raw xml log +
    /// the service parses the xml logs and returns a TestExecutionStep with updated TestResult(s). - user update the
    /// status of TestExecutionStep with id 100 to COMPLETE
    ///
    /// A Step can be updated until its state is set to COMPLETE at which points it becomes immutable.</summary>
    public class Step : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The time when the step status was set to complete.
        ///
        /// This value will be set automatically when state transitions to COMPLETE.
        ///
        /// - In response: set if the execution state is COMPLETE. - In create/update request: never set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("completionTime")]
        public virtual Timestamp CompletionTime { get; set; } 

        /// <summary>The time when the step was created.
        ///
        /// - In response: always set - In create/update request: never set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("creationTime")]
        public virtual Timestamp CreationTime { get; set; } 

        /// <summary>A description of this tool For example: mvn clean package -D skipTests=true
        ///
        /// - In response: present if set by create/update request - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; } 

        /// <summary>How much the device resource is used to perform the test.
        ///
        /// This is the device usage used for billing purpose, which is different from the run_duration, for example,
        /// infrastructure failure won't be charged for device usage.
        ///
        /// PRECONDITION_FAILED will be returned if one attempts to set a device_usage on a step which already has this
        /// field set.
        ///
        /// - In response: present if previously set. - In create request: optional - In update request:
        /// optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deviceUsageDuration")]
        public virtual Duration DeviceUsageDuration { get; set; } 

        /// <summary>If the execution containing this step has any dimension_definition set, then this field allows the
        /// child to specify the values of the dimensions.
        ///
        /// The keys must exactly match the dimension_definition of the execution.
        ///
        /// For example, if the execution has `dimension_definition = ['attempt', 'device']` then a step must define
        /// values for those dimensions, eg. `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
        ///
        /// If a step does not participate in one dimension of the matrix, the value for that dimension should be empty
        /// string. For example, if one of the tests is executed by a runner which does not support retries, the step
        /// could have `dimension_value = ['attempt': '', 'device': 'Nexus 6']`
        ///
        /// If the step does not participate in any dimensions of the matrix, it may leave dimension_value unset.
        ///
        /// A PRECONDITION_FAILED will be returned if any of the keys do not exist in the dimension_definition of the
        /// execution.
        ///
        /// A PRECONDITION_FAILED will be returned if another step in this execution already has the same name and
        /// dimension_value, but differs on other data fields, for example, step field is different.
        ///
        /// A PRECONDITION_FAILED will be returned if dimension_value is set, and there is a dimension_definition in the
        /// execution which is not specified as one of the keys.
        ///
        /// - In response: present if set by create - In create request: optional - In update request: never
        /// set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("dimensionValue")]
        public virtual System.Collections.Generic.IList<StepDimensionValueEntry> DimensionValue { get; set; } 

        /// <summary>Whether any of the outputs of this step are images whose thumbnails can be fetched with
        /// ListThumbnails.
        ///
        /// - In response: always set - In create/update request: never set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("hasImages")]
        public virtual System.Nullable<bool> HasImages { get; set; } 

        /// <summary>Arbitrary user-supplied key/value pairs that are associated with the step.
        ///
        /// Users are responsible for managing the key namespace such that keys don't accidentally collide.
        ///
        /// An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or if the length of any of the keys
        /// or values exceeds 100 characters.
        ///
        /// - In response: always set - In create request: optional - In update request: optional; any new key/value
        /// pair will be added to the map, and any new value for an existing key will update that key's value</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("labels")]
        public virtual System.Collections.Generic.IList<StepLabelsEntry> Labels { get; set; } 

        /// <summary>A short human-readable name to display in the UI. Maximum of 100 characters. For example: Clean
        /// build
        ///
        /// A PRECONDITION_FAILED will be returned upon creating a new step if it shares its name and dimension_value
        /// with an existing step. If two steps represent a similar action, but have different dimension values, they
        /// should share the same name. For instance, if the same set of tests is run on two different platforms, the
        /// two steps should have the same name.
        ///
        /// - In response: always set - In create request: always set - In update request: never set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Classification of the result, for example into SUCCESS or FAILURE
        ///
        /// - In response: present if set by create/update request - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("outcome")]
        public virtual Outcome Outcome { get; set; } 

        /// <summary>How long it took for this step to run.
        ///
        /// If unset, this is set to the difference between creation_time and completion_time when the step is set to
        /// the COMPLETE state. In some cases, it is appropriate to set this value separately: For instance, if a step
        /// is created, but the operation it represents is queued for a few minutes before it executes, it would be
        /// appropriate not to include the time spent queued in its run_duration.
        ///
        /// PRECONDITION_FAILED will be returned if one attempts to set a run_duration on a step which already has this
        /// field set.
        ///
        /// - In response: present if previously set; always present on COMPLETE step - In create request: optional - In
        /// update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("runDuration")]
        public virtual Duration RunDuration { get; set; } 

        /// <summary>The initial state is IN_PROGRESS. The only legal state transitions are * IN_PROGRESS -> COMPLETE
        ///
        /// A PRECONDITION_FAILED will be returned if an invalid transition is requested.
        ///
        /// It is valid to create Step with a state set to COMPLETE. The state can only be set to COMPLETE once. A
        /// PRECONDITION_FAILED will be returned if the state is set to COMPLETE multiple times.
        ///
        /// - In response: always set - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("state")]
        public virtual string State { get; set; } 

        /// <summary>A unique identifier within a Execution for this Step.
        ///
        /// Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
        ///
        /// - In response: always set - In create/update request: never set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("stepId")]
        public virtual string StepId { get; set; } 

        /// <summary>An execution of a test runner.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("testExecutionStep")]
        public virtual TestExecutionStep TestExecutionStep { get; set; } 

        /// <summary>An execution of a tool (used for steps we don't explicitly support).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("toolExecutionStep")]
        public virtual ToolExecutionStep ToolExecutionStep { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class StepDimensionValueEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("key")]
        public virtual string Key { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual string Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class StepLabelsEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("key")]
        public virtual string Key { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual string Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class SuccessDetail : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>If a native process other than the app crashed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("otherNativeCrash")]
        public virtual System.Nullable<bool> OtherNativeCrash { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A reference to a test case.
    ///
    /// Test case references are canonically ordered lexicographically by these three factors: * First, by
    /// test_suite_name. * Second, by class_name. * Third, by name.</summary>
    public class TestCaseReference : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The name of the class.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("className")]
        public virtual string ClassName { get; set; } 

        /// <summary>The name of the test case.
        ///
        /// Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The name of the test suite to which this test case belongs.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("testSuiteName")]
        public virtual string TestSuiteName { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A step that represents running tests.
    ///
    /// It accepts ant-junit xml files which will be parsed into structured test results by the service. Xml file paths
    /// are updated in order to append more files, however they can't be deleted.
    ///
    /// Users can also add test results manually by using the test_result field.</summary>
    public class TestExecutionStep : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Issues observed during the test execution.
        ///
        /// For example, if the mobile app under test crashed during the test, the error message and the stack trace
        /// content can be recorded here to assist debugging.
        ///
        /// - In response: present if set by create or update - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("testIssues")]
        public virtual System.Collections.Generic.IList<TestIssue> TestIssues { get; set; } 

        /// <summary>List of test suite overview contents. This could be parsed from xUnit XML log by server, or
        /// uploaded directly by user. This references should only be called when test suites are fully parsed or
        /// uploaded.
        ///
        /// The maximum allowed number of test suite overviews per step is 1000.
        ///
        /// - In response: always set - In create request: optional - In update request: never (use publishXunitXmlFiles
        /// custom method instead)</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("testSuiteOverviews")]
        public virtual System.Collections.Generic.IList<TestSuiteOverview> TestSuiteOverviews { get; set; } 

        /// <summary>The timing break down of the test execution.
        ///
        /// - In response: present if set by create or update - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("testTiming")]
        public virtual TestTiming TestTiming { get; set; } 

        /// <summary>Represents the execution of the test runner.
        ///
        /// The exit code of this tool will be used to determine if the test passed.
        ///
        /// - In response: always set - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("toolExecution")]
        public virtual ToolExecution ToolExecution { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An abnormal event observed during the test execution.</summary>
    public class TestIssue : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A brief human-readable message describing the abnormal event.
        ///
        /// Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errorMessage")]
        public virtual string ErrorMessage { get; set; } 

        /// <summary>Optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("stackTrace")]
        public virtual StackTrace StackTrace { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A summary of a test suite result either parsed from XML or uploaded directly by a user.
    ///
    /// Note: the API related comments are for StepService only. This message is also being used in ExecutionService in
    /// a read only mode for the corresponding step.</summary>
    public class TestSuiteOverview : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Number of test cases in error, typically set by the service by parsing the xml_source.
        ///
        /// - In create/response: always set - In update request: never</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errorCount")]
        public virtual System.Nullable<int> ErrorCount { get; set; } 

        /// <summary>Number of failed test cases, typically set by the service by parsing the xml_source. May also be
        /// set by the user.
        ///
        /// - In create/response: always set - In update request: never</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("failureCount")]
        public virtual System.Nullable<int> FailureCount { get; set; } 

        /// <summary>The name of the test suite.
        ///
        /// - In create/response: always set - In update request: never</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Number of test cases not run, typically set by the service by parsing the xml_source.
        ///
        /// - In create/response: always set - In update request: never</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("skippedCount")]
        public virtual System.Nullable<int> SkippedCount { get; set; } 

        /// <summary>Number of test cases, typically set by the service by parsing the xml_source.
        ///
        /// - In create/response: always set - In update request: never</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("totalCount")]
        public virtual System.Nullable<int> TotalCount { get; set; } 

        /// <summary>If this test suite was parsed from XML, this is the URI where the original XML file is stored.
        ///
        /// Note: Multiple test suites can share the same xml_source
        ///
        /// Returns INVALID_ARGUMENT if the uri format is not supported.
        ///
        /// - In create/response: optional - In update request: never</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("xmlSource")]
        public virtual FileReference XmlSource { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Testing timing break down to know phases.</summary>
    public class TestTiming : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>How long it took to run the test process.
        ///
        /// - In response: present if previously set. - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("testProcessDuration")]
        public virtual Duration TestProcessDuration { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A single thumbnail, with its size and format.</summary>
    public class Thumbnail : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The thumbnail's content type, i.e. "image/png".
        ///
        /// Always set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("contentType")]
        public virtual string ContentType { get; set; } 

        /// <summary>The thumbnail file itself.
        ///
        /// That is, the bytes here are precisely the bytes that make up the thumbnail file; they can be served as an
        /// image as-is (with the appropriate content type.)
        ///
        /// Always set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("data")]
        public virtual string Data { get; set; } 

        /// <summary>The height of the thumbnail, in pixels.
        ///
        /// Always set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("heightPx")]
        public virtual System.Nullable<int> HeightPx { get; set; } 

        /// <summary>The width of the thumbnail, in pixels.
        ///
        /// Always set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("widthPx")]
        public virtual System.Nullable<int> WidthPx { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Timestamp represents a point in time independent of any time zone or calendar, represented as seconds
    /// and fractions of seconds at nanosecond resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
    /// Calendar which extends the Gregorian calendar backwards to year one. It is encoded assuming all minutes are 60
    /// seconds long, i.e. leap seconds are "smeared" so that no leap second table is needed for interpretation. Range
    /// is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we
    /// can convert to and from RFC 3339 date strings. See
    /// [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
    ///
    /// # Examples
    ///
    /// Example 1: Compute Timestamp from POSIX `time()`.
    ///
    /// Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
    ///
    /// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
    ///
    /// struct timeval tv; gettimeofday(, NULL);
    ///
    /// Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.tv_usec * 1000);
    ///
    /// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
    ///
    /// FILETIME ft; GetSystemTimeAsFileTime(); UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
    ///
    /// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is 11644473600 seconds before Unix
    /// epoch 1970-01-01T00:00:00Z. Timestamp timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) -
    /// 11644473600LL)); timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
    ///
    /// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
    ///
    /// long millis = System.currentTimeMillis();
    ///
    /// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .setNanos((int) ((millis % 1000) *
    /// 1000000)).build();
    ///
    /// Example 5: Compute Timestamp from current time in Python.
    ///
    /// timestamp = Timestamp() timestamp.GetCurrentTime()
    ///
    /// # JSON Mapping
    ///
    /// In JSON format, the Timestamp type is encoded as a string in the [RFC
    /// 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is
    /// "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always expressed using four digits while
    /// {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can
    /// go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix indicates the timezone
    /// ("UTC"); the timezone is required, though only UTC (as indicated by "Z") is presently supported.
    ///
    /// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on January 15, 2017.
    ///
    /// In JavaScript, one can convert a Date object to this format using the standard
    /// [toISOString()](https://developer.mozilla.org/en-
    /// US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] method. In Python, a standard
    /// `datetime.datetime` object can be converted to this format using
    /// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the time format spec
    /// '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( http
    /// ://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
    /// formatter capable of generating timestamps in this format.</summary>
    public class Timestamp : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions
        /// must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999
        /// inclusive.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nanos")]
        public virtual System.Nullable<int> Nanos { get; set; } 

        /// <summary>Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from
        /// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("seconds")]
        public virtual System.Nullable<long> Seconds { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An execution of an arbitrary tool. It could be a test runner or a tool copying artifacts or deploying
    /// code.</summary>
    public class ToolExecution : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The full tokenized command line including the program name (equivalent to argv in a C program).
        ///
        /// - In response: present if set by create request - In create request: optional - In update request: never
        /// set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("commandLineArguments")]
        public virtual System.Collections.Generic.IList<string> CommandLineArguments { get; set; } 

        /// <summary>Tool execution exit code. This field will be set once the tool has exited.
        ///
        /// - In response: present if set by create/update request - In create request: optional - In update request:
        /// optional, a FAILED_PRECONDITION error will be returned if an exit_code is already set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("exitCode")]
        public virtual ToolExitCode ExitCode { get; set; } 

        /// <summary>References to any plain text logs output the tool execution.
        ///
        /// This field can be set before the tool has exited in order to be able to have access to a live view of the
        /// logs while the tool is running.
        ///
        /// The maximum allowed number of tool logs per step is 1000.
        ///
        /// - In response: present if set by create/update request - In create request: optional - In update request:
        /// optional, any value provided will be appended to the existing list</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("toolLogs")]
        public virtual System.Collections.Generic.IList<FileReference> ToolLogs { get; set; } 

        /// <summary>References to opaque files of any format output by the tool execution.
        ///
        /// The maximum allowed number of tool outputs per step is 1000.
        ///
        /// - In response: present if set by create/update request - In create request: optional - In update request:
        /// optional, any value provided will be appended to the existing list</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("toolOutputs")]
        public virtual System.Collections.Generic.IList<ToolOutputReference> ToolOutputs { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Generic tool step to be used for binaries we do not explicitly support. For example: running cp to copy
    /// artifacts from one location to another.</summary>
    public class ToolExecutionStep : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A Tool execution.
        ///
        /// - In response: present if set by create/update request - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("toolExecution")]
        public virtual ToolExecution ToolExecution { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Exit code from a tool execution.</summary>
    public class ToolExitCode : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Tool execution exit code. A value of 0 means that the execution was successful.
        ///
        /// - In response: always set - In create/update request: always set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("number")]
        public virtual System.Nullable<int> Number { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A reference to a ToolExecution output file.</summary>
    public class ToolOutputReference : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The creation time of the file.
        ///
        /// - In response: present if set by create/update request - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("creationTime")]
        public virtual Timestamp CreationTime { get; set; } 

        /// <summary>A FileReference to an output file.
        ///
        /// - In response: always set - In create/update request: always set</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("output")]
        public virtual FileReference Output { get; set; } 

        /// <summary>The test case to which this output file belongs.
        ///
        /// - In response: present if set by create/update request - In create/update request: optional</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("testCase")]
        public virtual TestCaseReference TestCase { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }
}
